为什么jQuery模板会为某些字符串添加双引号

时间:2011-10-06 22:51:08

标签: jquery asp.net-mvc google-chrome jquery-templates double-quotes

背景

我正在使用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>

为什么会自动插入双引号?更重要的是,我该如何预防或修复它?

更新

我已经确定只有在文本中包含@时才会发生这种情况。 。 。只要包含用户名,就会发生这种情况。

我不确定为什么这个解决方案有效,但确实如此。我稍后会更新这篇文章,因为我会更好地理解这个问题。

更改(不起作用)

<div class="bd">before ${text.parseUserName().parseHashTag()} after</div>

收件人:(工作)

<div class="bd">before {{html text.parseUserName().parseHashTag()}} after</div>

1 个答案:

答案 0 :(得分:2)

我不确定为什么这个解决方案有效,但确实如此。我稍后会更新这篇文章,因为我会更好地理解这个问题。

更改(不起作用)

<div class="bd">before ${text.parseUserName().parseHashTag()} after</div>

收件人:(工作)

<div class="bd">before {{html text.parseUserName().parseHashTag()}} after</div>