Как настроить таргетинг на элемент, но не на его вложенный элемент? - PullRequest
1 голос
/ 17 сентября 2011

Как я могу нацелить элемент, но не его вложенный элемент?

Например, я не хочу менять текст в <span>, который вложен в <h1>

HTML:

<h1>Change me <span> Don't change me</span></h1>
<h1>Change me <span> Don't change me</span></h1>

jQuery:

$("h1:first").text('Changed');

Таким образом, результат должен быть:

<h1>Changed <span> Don't change me</span></h1>
<h1>Change me <span> Don't change me</span></h1>

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Вот, пожалуйста:

$( 'h1' )[0].firstChild.nodeValue = 'Changed ';

Живая демоверсия: http://jsfiddle.net/TqxrT/1/

1 голос
/ 17 сентября 2011
$("h1:first").contents().filter(function() {
    return this.nodeType == 3;
}).replaceWith('foo');

alert($("h1:first").html());

Что он делает:

  • .contents() возвращает все дочерние элементы элемента
  • .filter(...) сохраняет только текстовые узлы
  • .replacewith() заменяет текстовые узлы некоторым текстом

Попробуйте здесь: http://jsfiddle.net/CZLuN/

...