Подтвердить что ты не робот

Как добавить/добавить/создать текст node с помощью jQuery

Возможный дубликат:
Удаление текста с помощью jQuery append?

Мой HTML выглядит примерно так:

<div id="selector">Hello World</div>

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

$('#selector').append(text);

но это не ускользнет от каких-либо специальных символов в text. Другой способ - обернуть текст в промежутке:

$('#selector').append( $('<span>').text(text) );

Но это уродливо, потому что оно создает ненужную разметку. Итак, мое текущее решение состоит в том, чтобы вручную создать TextNode:

$('#selector').append( document.createTextNode(text) );

Мне было интересно, есть ли способ jQuery-стиля для этого?

4b9b3361

Ответ 1

Подход createTextNode, вероятно, лучший способ. Если вы хотите иметь синтаксис jQuery-ish, вы можете создать плагин.

$.fn.appendText = function(text) {
    return this.each(function() {
        var textNode = document.createTextNode(text);
        $(this).append(textNode);
    });
};

Ответ 2

$. text() принимает также функцию как параметр. Эта функция получит индекс и текущий текст. Возвращаемое значение функции будет установлено как новый текст.

http://jsfiddle.net/4SvgV/1/

Ответ 3

Вы можете использовать;

$.extend({
        urlEncode: function(value) {
            var encodedValue = encodeURIComponent(value);
            encodedValue = encodedValue.replace("+", "%2B");
            encodedValue = encodedValue.replace("/", "%2F");

            return encodedValue;
        },
        urlDecode: function(value) {
            var decodedValue = decodeURIComponent(value);
            decodedValue = decodedValue.replace("%2B", "+");
            decodedValue = decodedValue.replace("%2F", "/");

            return decodedValue;
        }
});

чтобы избежать символов HTML перед добавлением в DOM.

Используйте его как; $.urlEncode(value)

Использование; $('#selector').append($.urlEncode(text));

Обновление # 1

Вы можете сделать это $('#selector').html($('#selector').html() + text);

Я подозревал, что это то, что вы хотели.