#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>