Как обновить функцию jQuery, чтобы заменить источник, а не вернуть? - PullRequest
0 голосов
/ 12 января 2012

Учитывая следующий плагин: https://github.com/Marak/jquery.emoticon.js

Как автор ожидает, что вы будете использовать ниже?

$.fn.emoticon = function(theText) {
    var imagePath = "emotes/"; 
    var newText = theText;
    for( var a in emoticons.emoticon ) {
        emoticon = emoticons.emoticon[a];
        for( var emote in emoticon.emotes ) {

            emote = RegExp.escape(emote);
            newText = newText.replace( new RegExp( emote, 'gi' ), '<img src="'+imagePath + emoticon.image + '" />');
        }
    }
    return newText;
};

Если я бегу:

$('body').emoticon('Hello :0 World')

Возвращает:

"Hello <img src="emotes/shock.png" /> World"

Есть ли способ на самом деле заменить переданный элемент? Как в обновлении где находит совпадение? Вроде как, как навеселе ты применяешь типсы к желаемому элементу: $('#example-1').tipsy();

Мысли? Спасибо

1 Ответ

1 голос
/ 12 января 2012

Это плохой плагин jquery, как сказал roberkules. Эта функция, приведенная ниже, заменит html элемента jquery, а затем возвращает его (элементы jquery), чтобы разрешить сцепление.

$.fn.emoticon = function(theText) {
    var imagePath = "emotes/"; 
    var newText = theText;
    for( var a in emoticons.emoticon ) {
        emoticon = emoticons.emoticon[a];
        for( var emote in emoticon.emotes ) {
            emote = RegExp.escape(emote);
            newText = newText.replace( new RegExp( emote, 'gi' ), '<img src="'+imagePath + emoticon.image + '" />');
        }
    }
    return this.each(function() {           
        $(this).html(newText);
    });
};

То же самое с html:

<body></boby>

Бег

$('body').emoticon('Hello :0 World');

В результате функция вернет $ ('body'), а html будет:

<body>Hello <img src="emotes/shock.png" /> World</boby>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...