Почему этот JavaScript не заменяет текст символом «сердце»? - PullRequest
2 голосов
/ 21 февраля 2012
(function( $ ) {

    $.fn.htmlCodes = function(){
        var $this = this;
        var body = this.html();
        body = body.replace(':)', '&#9786;').replace('<3', '&#9829;');
        this.html(body);
    };  


})( jQuery );

Я написал этот плагин JQuery, чтобы он сменил смайлики на сущность смайликов.(и сердце)

Однако сердце не работает!По какой-то причине смайлик работает, а сердце - нет.

Ответы [ 3 ]

10 голосов
/ 21 февраля 2012

Работает, если вы делаете это ...

.replace('&lt;3', '&#9829;');

ДЕМО: http://jsfiddle.net/ZdJh5/

.html() дает вам код символа HTML для символа <.

2 голосов
/ 21 февраля 2012

A < - это специальный символ в HTML, который будет возвращать функция jQuery html, поэтому вам нужно заменить &lt; вместо <. Кроме того, для всеобщего сведения вы должны использовать флаг /g:

(function( $ ) {

    $.fn.htmlCodes = function() {
        var $this = this;
        var body = this.html();
        body = body.replace(/:\)/g, '&#9786;').replace(/&lt;3/g, '&#9829;');
        this.html(body);
    };  

})( jQuery );

В противном случае будет заменен только первый экземпляр. И быстрое демо, чтобы показать, что оно работает . ☺

1 голос
/ 21 февраля 2012
body = body.replace(':)', '&#9786;').replace('&lt;3', '&#9829;');

Возможно < закодировано как &lt;.

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