Как судить элемент предыдущего или следующего элемента существует с 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 всегда будет оцениваться как boolean true
(как в инструкции if
). Это потому, что это не родной тип Javascript - это объект.
Вам нужно проверить свойство length
. Если он пуст, это будет 0
и будет оцениваться до false
, поэтому if
не пройдет. Если он не пуст, он будет положительным целым числом и поэтому будет оцениваться как true
, поэтому условное будет проходить.
if ($("li.test").next().length) { …… }
Ответ 2
if ($("li.test").next().length > 0) { ... }
http://jsfiddle.net/Kfsku/
Ответ 3
$("li.test").next().length
;
Пример
Ответ 4
Вам нужно проверить свойство length.
if ($("li.test").next().length) {
//has next
} else {
//last elem
}
Имейте в виду, что jQuery обычно возвращает себя, чтобы вы могли цепочки. Получение свойства length
этого объекта даст вам информацию