背景
我正在使用jQuery模板,ASP.Net MVC Razor视图和Twitter.
问题
使用带有一些字符串的jQuery模板会自动导致这些字符串被包含在“
细节
我创建了一个如下所示的jQuery模板:
<script id="twitterResultsTemplate" type="text/x-jquery-tmpl">
<div class="tweetItem">
<div class="userAvatar"><img src="${profile_image_url}" alt="${from_user} Image" /></div>
<div class="tweetSummary">
<div class="bd">before ${text.parseUserName().parseHashTag()} after</div>
<div>${created_at}</div>
<div class="ft">${prettyDate(created_at)}</div>
</div>
</div>
<br style="clear: both;" />
</script>
以下javascript格式化用户名和哈希标记
String.prototype.parseUsername = function () {
return this.replace(/[@]+[A-Za-z0-9-_]+/g, function (u) {
var username = u.replace("@", "")
return u.link("http://twitter.com/" + username);
});
};
String.prototype.parseHashtag = function () {
return this.replace(/[#]+[A-Za-z0-9-_]+/g, function (t) {
var tag = t.replace("#", "%23")
return t.link("http://search.twitter.com/search?q=" + tag);
});
};
不幸的是,正在发生的事情是文本被包含在双引号内.所以,
我期望得到的是:
<div>before @user Hello World #hello #world after</div>
相反,我得到的是:
<div>"before @user Hello World #hello #world after"</div>
为什么会自动插入双引号?更重要的是,我该如何预防或修复它?
UPDATE
我已经确定只有当@包含在文本中时才会发生这种情况. . .只要包含用户名,就会发生这种情况.
解
我不确定为什么这个解决方案有效,但确实如此.我稍后会更新这篇文章,因为我会更好地理解这个问题.
改变(不起作用)
<div class="bd">before ${text.parseUserName().parseHashTag()} after</div>
致:(工作)
<div class="bd">before {{html text.parseUserName().parseHashTag()}} after</div>
最佳答案 我不确定为什么这个解决方案有效,但确实如此.我稍后会更新这篇文章,因为我会更好地理解这个问题.
改变(不起作用)
<div class="bd">before ${text.parseUserName().parseHashTag()} after</div>
致:(工作)
<div class="bd">before {{html text.parseUserName().parseHashTag()}} after</div>