Как добавить/добавить/создать текст 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-стиля для этого?
Ответы
Ответ 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);
Я подозревал, что это то, что вы хотели.