18

假设我有一个<ul>

<ul>
    <li></li>
    <li></li>
    <li class="test"></li>
</ul>

如何判断是否.test有 jquery 的下一个元素?像这样?:

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");
                }
            }
        }

目前这可以解决我的问题,但是有没有简单的方法?

谢谢你

4

4 回答 4

41

jQuery 选择将始终评估为布尔值true(如在if语句中)。这是因为它不是原生的 Javascript 类型——它是一个对象。

您需要检查length选择的属性。如果它是空的,这将是0并且将评估为false,所以if不会通过。如果它不为空,它将是一个正整数,因此将评估为true,因此条件将通过。

if ($("li.test").next().length) { …… }
于 2011-04-16T09:53:11.280 回答
7
if ($("li.test").next().length > 0) { ... }

http://jsfiddle.net/Kfsku/

于 2011-04-16T09:51:43.323 回答
2

$("li.test").next().length;

例子

于 2011-04-16T09:53:28.653 回答
1

您需要检查长度属性。

if ($("li.test").next().length) {
  //has next 
} else {
  //last elem
}

请记住,jQuery 通常会返回自身,因此您可以链接。获取该length对象的属性将为您提供信息

于 2011-04-16T09:53:02.813 回答