Причина состоит в том, что мы можем сделать
$('<div>some text</div>').prependTo('#someDiv')
таким образом это также в порядке, чтобы сделать:
$('some text').prependTo('#someDiv')
но мы не можем измениться some text
кому: body
? body
так же хорошо как любой текст...
(вышеупомянутый код добавляет some text
отделению с идентификатором someDiv
, таким образом, что, если я хочу добавить слово body
отделению?)
но $ ('тело') становится селектором для элемента тела... так там правило, в котором говорится, мы можем использовать какой-либо текст в качестве HTML-кода, пока это не название элементов HTML?
В основном это недопустимо:
$('generic text here, *not* a selector or HTML');
Это должно всегда быть либо селектором (поиск элемента), либо html (создание элемента (ов)), вы можете просмотреть API для $ ()
здесь .
Вы хотите использовать один из других методов вставки DOM здесь, .prepend ()
в данном случае:
$('#someDiv').prepend('any text or html here is valid, <b>Hey look bold</b>.');
Работа с текстовыми узлами - не сильная сторона JQuery. Вы можете использовать обычные методы DOM:
$('#someDiv')[0].appendChild(document.createTextNode("body"));
Это потому, что jQuery рассматривает селекторы перед созданием фрагментов HTML. "body" является допустимым селектором и будет использоваться как селектор.
Лучше использовать функцию prepend для добавления HTML или текста к узлу:
$('#someDiv').prepend('some text');
Значение, переданное в prepend, не используется в качестве селектора, и вы можете добавить текст «body».
Если он содержит html теги, то он обрабатывается как html (за исключением того, что он удаляет текст перед первым тегом и после последнего). например $("
. В противном случае он рассматривается как селектор, например $("some text")
.