2010-05-05 11 views
9

नमस्ते मैं एलआई की गिनती करना चाहता हूं जिसमें यूएल नहीं है, केवल पहले स्तर के लिए, लेकिन जब मैं इसे गिनता हूं तो यह 2 के बजाय आकार 4 दिखाता है, इसकी आंतरिक ली भी गिनती है।ली कैसे गिनती है जिसमें उल नहीं है?

<div class="navigation-container"> 
    <ul class="first-level"> 
     <li><a href="#">Link 1</a></li> 
     <li><a href="#">Link 2</a> 
     <ul> 
      <li><a href="#">Link2.1</a></li> 
      <li><a href="#">Link2.2</a> 
      <ul> 
       <li><a href="#">Link 2.2.1</a></li> 
      </ul> 
      </li> 
     </ul> 
     </li> 
     <li><a href="#">Link </a></li> 
    </ul> 
    </div> 
इस के लिए

jQuery।

jQuery(document).ready(function(){ 

    var nosubnav = jQuery('.first-level li:not(:has(ul))'); 
    var nosubnavsize = jQuery('.first-level li:not(:has(ul))').size(); 
    jQuery(nosubnav).css('border' , '1px solid red'); 
    alert('List item which does not have submenu '+nosubnavsize); 

}); 

JSBin पर परीक्षण link text के लिए लिंक,

धन्यवाद

उत्तर

11

आप बच्चे चयनकर्ता > टी का उपयोग कर सकते हैं o माता-पिता के तहत सीधे बाल तत्वों को लक्षित करें।

jQuery(document).ready(function(){ 

    var nosubnav = jQuery('.first-level > li:not(:has(ul))'); 
    nosubnav.css('border' , '1px solid red'); 
    alert('List item which does not have submenu '+nosubnav.length); 

}); 

इस की भूमि के ऊपर काट देगा:

jQuery(document).ready(function(){ 

    var nosubnav = jQuery('.first-level > li:not(:has(ul))'); 
    var nosubnavsize = jQuery('.first-level > li:not(:has(ul))').size(); 
    jQuery(nosubnav).css('border' , '1px solid red'); 
    alert('List item which does not have submenu '+nosubnavsize); 

}); 

इस 2. की गिनती तुम भी लक्ष्य ली के अपने संग्रहीत चयन पुन: उपयोग से थोड़ा इस अनुकूलन कर सकते हैं (nosubnav में संग्रहीत) वापस आ जाएगी दूसरी बार डोम से पूछताछ।

9

सुनिश्चित नहीं हैं कि अगर मैं सही पढ़ रहा हूँ, लेकिन ..

$('ul.first-level > li:not(:first)').length 

रिटर्न मेरे लिए 2 (see demo)

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