#jquery #element #next
#jquery #элемент #Далее
Вопрос:
предположим, у меня есть <ul>
:
<ul>
<li></li>
<li></li>
<li class="test"></li>
</ul>
Как я могу определить, .test
есть ли следующий элемент с помощью jquery?
вот так?:
if ($("li.test").next()) { …… }
странно то, что даже я пишу, как указано выше:
if ($("li.test").next()) {alert("true");}
он по-прежнему выдает предупреждение «true», но, как вы видите, рядом с ним нет элемента?почему это произошло?
Или что я могу сделать, это
for (i = 0; i < $("li").length; i ) {
if ($("li").eq(i).hasClass("test")) {
if (i == $("li").length - 1) {
alert("true");
}
}
}
в настоящее время это могло бы решить мою проблему, но есть ли простой способ?
Спасибо
Ответ №1:
Выбор jQuery всегда будет приниматься за логическое значение true
(как в if
инструкции). Это потому, что это не собственный тип Javascript — это объект.
Вам нужно проверить length
свойство выделения. Если он пустой, это будет 0
и будет оцениваться как false
, поэтому if
не пройдет. Если он не пустой, он будет положительным целым числом и, следовательно, будет равен true
, поэтому условие будет выполнено.
if ($("li.test").next().length) { …… }
Ответ №2:
if ($("li.test").next().length > 0) { ... }
Ответ №3:
$("li.test").next().length
;
Ответ №4:
Вам нужно проверить свойство length .
if ($("li.test").next().length) {
//has next
} else {
//last elem
}
Имейте в виду, что jQuery обычно возвращает сам себя, чтобы вы могли создавать цепочки. Получение length
свойства этого объекта даст вам информацию