Я с помощью JQuery следующего() метода на следующий HTML:JQuery: Пытаясь понять следующую() функцию
<div id="NavBar">
<div class="dropDownList">
<ul>
<li><a href="#"><span>Home</span></a></li>
<li><a href="#"><span>Products</span></a>
<ul>
<li><a href="#"><span>test</span></a>
<li><a href="#"><span>test</span></a>
</ul>
</li>
<li><a href="#"><span>Company</span></a>
</li>
<li><a href="#"><span>Contact</span></a></li>
</ul>
</div>
<div class="dropDownList">
<ul>
<li><a href="#"><span>Home</span></a></li>
<li><a href="#"><span>Products</span></a>
</li>
<li><a href="#"><span>Company</span></a>
</li>
<li><a href="#"><span>Contact</span></a></li>
</ul>
</div>
</div>
я добавил следующий обработчик щелчка, чтобы якоря в списке и написал текущие и элемент следующего() на консоли так:
$('.dropDownList > ul > li > a').click(function() {
console.dir($(this));
var checkElement = $(this).next();
console.dir(checkElement);
}
Когда я нажимаю «Products» элемент списка первой ул я вижу это в консоли:
Итак, я вижу, что первый элемент - это якорь, а следующий - ul - это имеет смысл для меня. Теперь моя путаница возникает, когда я нажимаю элемент списка «Продукты» во второй строке ul. Я возвращаю два объекта, как раньше, но на этот раз они оба являются якорями. Я думал, что первым элементом привязки будет «Products», а второй будет «Company», потому что это следующий элемент в элементе списка или, может быть, даже элемент <li>
, содержащий следующий якорь. Вместо этого, когда я перехожу к объектам консоли, они выглядят одинаковыми. Поле text и textContent одинаковое для обоих:
Почему это?
А я понимаю. next() получает следующий _sibling_. Второй объект, который я просматривал в консоли, - это объект jquery с нулевой длиной, как вы говорите. Я был смущен, потому что .text второго объекта был «a», но это только потому, что объект, первоначально переданный ему, был «a» - правильно? – red888
Видимо, хотя это не то, что я ожидал. Тем не менее, вероятно, поэтому рекомендуется только проверять '.length', чтобы увидеть, действительно ли объект jQuery содержит элемент DOM. – Blazemonger