2011-04-16 56 views
13

假设我有一个<ul>如何判断一个元素的上一个或下一个元素与jQuery存在?

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

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

谢谢

回答

32

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

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

if ($("li.test").next().length) { …… } 
1

您需要检查length属性。

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

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

相关问题