假设我有<ul>
:
<ul>
<li></li>
<li></li>
<li class="test"></li>
</ul>
如何用jquery判断.test
是否有下一个元素?
像这样?:
if ($("li.test").next()) { …… }
奇怪的是,即使我像上面那样写道:
if ($("li.test").next()) {alert("true");}
它仍然警告“真实”,但如你所见,旁边没有元素?为什么会这样?
或者我能做的是
for (i = 0; i < $("li").length; i++) {
if ($("li").eq(i).hasClass("test")) {
if (i == $("li").length - 1) {
alert("true");
}
}
}
目前这可以解决我的问题,但有一种简单的方法吗?
谢谢
答案 0 :(得分:37)
jQuery选择将始终评估为布尔true
(如if
语句中所示)。这是因为它不是本机Javascript类型 - 它是一个对象。
您需要检查所选内容的length
属性。如果它为空,则为0
并将评估为false
,因此if
将无法通过。如果它不为空,则它将是一个正整数,因此将计算为true
,因此条件将通过。
if ($("li.test").next().length) { …… }
答案 1 :(得分:7)
if ($("li.test").next().length > 0) { ... }
答案 2 :(得分:2)
$("li.test").next().length
;
答案 3 :(得分:1)
您需要检查长度属性。
if ($("li.test").next().length) {
//has next
} else {
//last elem
}
请记住,jQuery通常会自行返回,因此您可以链接。获取该对象的length
属性将为您提供信息