2011-09-07 14 views
5

के बीच तत्वों की संख्या गिनती है, मैं यह जानने की कोशिश कर रहा हूं कि डीओएम में एक क्लिक किए गए तत्व को "दूर" कैसे एक निश्चित अन्य तत्व के लिए है।"यह" और "वह" तत्व

<li>item1</li> 
<li>item2</li> 
<li class="active">item3</li> 
<li>item4</li> 
<li>item5</li> 
<li>item6</li> 
<li>item7</li> 

तो जब कोई उपयोगकर्ता एक तत्व पर क्लिक करता है यह सक्रिय तत्व के लिए दूरी लौटना चाहिए: तो item1: return -2, item4: return 1, item6: return 3, और इतने पर।

+0

http://stackoverflow.com/questions/13875 60/खोज-संख्या-के-नोड्स-बीच-दो-तत्व-साथ-jquery –

+0

@Marcus - यह वही नहीं है। –

+0

उस के अलावा ^, आप हमेशा तत्वों की एक सूची प्राप्त कर सकते हैं और उसके बाद बस इसे पार कर सकते हैं, प्रत्येक तत्व के लिए काउंटर बढ़ा सकते हैं और जब भी आपको आवश्यक तत्व को दबाते हैं तो बस तोड़ दें। –

उत्तर

6

मैं तुम्हें इसके index() विधि कर सकता है विश्वास करते हैं ...

कुछ इस तरह:

var value = $('li').index() - $('li.active').index(); 
+0

सरल और मीठा! इसे 'क्लिक' फ़ंक्शन के अंदर काम करने के लिए मामूली संशोधन: '$ (यह) .index() - $ (यह) .siblings (" सक्रिय ")। अनुक्रमणिका()' – peirix

+1

@peirix यदि उपयोगकर्ता सक्रिय पर क्लिक करता है LI, फिर '$ (this) .siblings (" सक्रिय ")। अनुक्रमणिका()' ''' वापस आ जाएगी, इसलिए गणना गलत होगी। आपके विशेष मामले में, सक्रिय LI पर क्लिक करने से '3' (' 2 - (-1) = 3') वापस आ जाएगा, जैसे कि आइटम 6 क्लिक किया गया था ... –

+0

कोड में पहले बिंदु पर पहले से ही एक चेक है , इसलिए यदि यह सक्रिय है तो यह कोड नहीं चलाएगा। लेकिन इसे इंगित करने के लिए धन्यवाद, जानना अच्छा है (: – peirix

2

ये रहा:

$(ul).delegate('li', 'click', function() { 
    var idx1 = $(this).index(), 
     idx2 = $(this).siblings().andSelf().filter('.active').index(); 

    var distance = idx1 - idx2; 

    // do stuff with distance 
}); 

लाइव डेमो:http://jsfiddle.net/aeEBP/

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