Почему шаблоны jQuery добавляют двойные кавычки в некоторые строки - PullRequest
4 голосов
/ 07 октября 2011

Фон

Я работаю с шаблонами 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>

Почему двойные кавычки автоматически вставляются? Что более важно, как это предотвратить или исправить?

ОБНОВЛЕНИЕ

Я определилчто это происходит только тогда, когда @ включено в текст ... что происходит всякий раз, когда включается имя пользователя.

РЕШЕНИЕ

Я не совсем уверенпочему это решение работает, но оно работает. Я обновлю этот пост позже, чтобы лучше понять профессионала.blem.

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

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

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

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

1 Ответ

2 голосов
/ 07 октября 2011

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

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

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

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

<div class="bd">before {{html text.parseUserName().parseHashTag()}} after</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...