Почему <превращается в <? - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь заменить HTML смайлика (изображение) на обычный текст.Но мне нужен нормальный HTML для отображения.

Здесь: http://jsfiddle.net/xk2VX/

Я использую:

$("code").each(function() {
    var a = ['<img class="smile" src="http://static.yamma.org/images/icons/smile.png">', '&lt;img class="laugh" src="http://static.yamma.org/images/icons/laugh.png"&gt;'],
        b = [":)", ":D"];

    for (var d = 0; d < a.length; d++) {
        var e = $(this).html(),
            f = e,
            g = f.indexOf(a[d]);
        while (g != -1) {
            f = f.replace(a[d], b[d]);
            g = f.indexOf(a[d]);
        }
        $(this).text(f);
    }
});​

И он возвращает: &lt;div&gt;Hi&lt;/div&gt; :) :D :) :D;но он должен вернуть: <div>Hi</div> :) :D :) :D;

Я просто не понимаю, почему < и > заменяются на &lt; и &gt;

Есть лиисправить это?Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 11 марта 2012

Я заметил, что вы звоните .text() в конце цикла for, когда вам следует вместо этого вызывать .html(), даже если вы правильно вызываете .html() в начале:

    for (var d = 0; d < a.length; d++) {
        var e = $(this).html(),
            f = e,
            g = f.indexOf(a[d]);
        while (g != -1) {
            f = f.replace(a[d], b[d]);
            g = f.indexOf(a[d]);
        }
        $(this).text(f);
    }

.text() всегда преобразует специальные символы HTML в сущности, поэтому они не будут обрабатываться как разметка, поскольку ожидаются текст , а не HTML .

0 голосов
/ 11 марта 2012

Иногда помогает читать API: http://api.jquery.com/text/#text2 - при вызове .text(),

заменяет специальные символы их эквивалентами сущности HTML

Итак, как говорит @BoltClock, вы используете неправильный метод для того, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...