Почему шаблоны jQuery добавляют двойные кавычки к некоторым строкам

#jquery #asp.net-mvc #google-chrome #jquery-templates #double-quotes

#jquery #asp.net-mvc #google-chrome #jquery-шаблоны #двойные кавычки

Вопрос:

Предыстория

Я работаю с шаблонами 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("#", "#")
        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. Я не могу воспроизвести эффект. Проверьте jsfiddle.net/FloydPink/gRxyC/1/embedded/result — Можете ли вы опубликовать более подробную информацию о версиях, которые вы используете, а также о своем коде?

2. На самом деле, вы можете увидеть эффект прямо на своем сайте: jsfiddle.net/c5H3A/2

3. «Альбом DUETS II моего красивого дорогого Тони Беннетта № 1! Так счастлив! Вот видео на нашу песню THE LADY IS A TRAMP: t.co/v9bXj5QH » — он появляется с кавычками

4. При проверке с помощью инструментов разработчика Google весь текст внутри элементов li заключен в кавычки.

5. Спасибо. Я только что добавил это. Однако это заставляет вас ждать 2 дня, прежде чем отмечать свой собственный ответ как принятый ответ.

Ответ №1:

Я не совсем уверен, почему это решение работает, но оно работает. Я обновлю этот пост позже, когда лучше пойму проблему.

Изменить (не работает)

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

Кому: (работает)

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