2011-04-16 20 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 बयान में के रूप में) का मूल्यांकन करेंगे दे देंगे। ऐसा इसलिए है क्योंकि यह मूल जावास्क्रिप्ट प्रकार नहीं है - यह एक वस्तु है।

आपको चयन की length संपत्ति की जांच करने की आवश्यकता है। यदि यह खाली है, तो यह 0 होगा और false का मूल्यांकन करेगा, इसलिए if पास नहीं होगा। यदि यह खाली नहीं है, तो यह एक सकारात्मक पूर्णांक होगा और इसलिए true का मूल्यांकन करेगा, इसलिए सशर्त पास होगा।

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

आप लंबाई संपत्ति की जांच करने की जरूरत है।

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

ध्यान रखें कि jQuery आमतौर पर स्वयं लौटता है ताकि आप श्रृंखला कर सकें। उस वस्तु की length संपत्ति हो रही है आप जानकारी

संबंधित मुद्दे