jQuery nextUn до странности - PullRequest
0 голосов
/ 09 марта 2011

Я что-то упустил или это метод fubar? Я не смог заставить скрипт выбрать правильно, поэтому я удалил все, кроме jQuery 1.5, и попробовал это как тест:

HTML:

  <a href="test.php" id="test" class="notActive">test active</a>
  <p><a href="ui.php#content" class="ajax" data-target="loadid">Link 1</a></p>
  <p><a href="widgets.html" class="ajax" data-target="loadid">Link 2</a></p>
  <div id="loadid" class="right bgGreen pad">test;</div>

JQuery:

var z = $('#test').nextUntil('div');

z.css({'background-color' : '#000000' });

console.log(z.html());

Возвращает:

<a href="test.php" id="test" class="notActive">test active</a>
<p style="background-color: #000000">
<a href="ui.php#content" class="ajax" data-target="loadid">
</p>
<p style="background-color: #000000">
<a href="widgets.html" class="ajax" data-target="loadid">
</p>
<div id="loadid" class="right bgGreen pad">


LOG: <\a href="ui.php#content" class="ajax" data-target="loadid">Link 1</a>

Кроме того, изменение селектора с 'div' на 'p' приводит к нулю ... есть идеи?

Ответы [ 3 ]

1 голос
/ 09 марта 2011

Вы что-то упускаете. От Документация по jQuery API :

Учитывая объект jQuery, который представляет набор элементов DOM, метод .nextUntil() позволяет нам осуществлять поиск среди наследников этих элементов в дереве DOM, останавливаясь, когда он достигает элемента, соответствующего аргументу метода. Новый возвращаемый объект jQuery содержит все последующие братья и сестры вплоть до, но не включая тот, который соответствует селектору .nextUntil().

Значение, возвращаемое вашим nextUntil(), содержит несколько элементов , а именно два <p> s. Регистрация значения, возвращенного .html(), вводит в заблуждение, потому что .html() возвращает только внутренний HTML из первого объекта в наборе . Просто зарегистрируйте сам объект jQuery, и вы сможете увидеть, что внутри него (по крайней мере, в Firebug; я не думаю, что отладчик WebKit регистрирует объекты jQuery так же хорошо):

console.log(z);

Какой элемент вы пытаетесь выбрать?

0 голосов
/ 09 марта 2011

Ваш синтаксис .css неправильный, я думаю.

Должен иметь "," вместо ":"

z.css('background-color', '#000000' );
0 голосов
/ 09 марта 2011

Ну, это кажется правильным. Согласно http://api.jquery.com/nextUntil/ .nextUntil выбирает всех братьев и сестер до тех пор, пока не включает элемент, выбранный аргументом. Поэтому, если вы делаете .nextUntil ('div'), вы выбираете все абзацы (которые являются родственными элементами вашего элемента #test). Если вы сделаете .nextUntil ('p'), то ничего не будет выделено, потому что сразу после # теста появится абзац.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...