2012-06-08 20 views
6

पर काम करता है मुझे jqueries समझने में परेशानी हो रही है।jquery। प्रत्येक केवल पहले तत्व

$('#testDiv').each(function(index, domEle){  
    $(this).text(index); 
}); 

और निम्न HTML

<div id="p18"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div id="testDiv"></div> 
    </div> 
</div> 
<div id="p19"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div id="testDiv"></div> 
    </div> 
</div> 
<div id="p20"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div id="testDiv"></div> 
    </div> 
</div> 

जब स्क्रिप्ट यह केवल चलाता पहले testDiv लिए काम करता है, के रूप में इसे सही ढंग से 0 करने के लिए पाठ सेट लेकिन अन्य testDivs,: मैं निम्नलिखित कोड है ।

मेरा समग्र लक्ष्य एक स्क्रिप्ट लिखना है जो div की ऊंचाई को किसी अन्य div की ऊंचाई के आधार पर सेट करेगा। ऊंचाइयों में भिन्नता है इसलिए मुझे लगता है कि एक लूप संरचना जाने का तरीका है (जब तक मुझे गलत नहीं लगता?)

मैं jq कोड के साथ गलत तरीके से क्या कर रहा हूं?

+1

पूरे पृष्ठ में एक आईडी अद्वितीय होनी चाहिए, जो व्यवहार आप देखते हैं वह पूरी तरह सामान्य है। –

+1

आपका एचटीएमएल एंट वैध :) डुप्लिकेट आईडी

+0

एक ही आईडी वाले एकाधिक तत्वों के साथ समस्या को ठीक करें, और उसके बाद कक्षा पर '$ .each' का उपयोग करने का प्रयास करें। '$ ('। inner')। प्रत्येक (फ़ंक्शन ... ' – jimmym715

उत्तर

16

आप विभिन्न तत्वों के लिए एक ही #id उपयोग नहीं कर सकते। (किसी भी कक्षा जोड़े बिना काम करता है - क्लीनर कोड) बाकी का नाम बदलने की कोशिश करो और आप परिणाम प्राप्त करेंगे आप

चाहते हैं या ऐसा करने

$('.inner div').each(function(index, domEle){  
    $(this).text(index); 
}); 
+0

मेरे पास मेरे किसी भी चयनित तत्व के लिए कोई आईडी सेट नहीं है। मेरे मामले में, मेरे फ़ंक्शन में डोमेल जोड़ने से चाल चल रही है। धन्यवाद – DerpyNerd

3

each विधि के साथ कोई समस्या नहीं है। आपने कई तत्वों के लिए id निर्दिष्ट किया है, जो समर्थित नहीं है।

इसके बजाय कक्षा का उपयोग करें, और आप सभी तत्वों को पा सकते हैं।

डेमो: http://jsfiddle.net/Guffa/xaL4n/

6

id चयनकर्ता अधिकतम एक तत्व देता है।

आपके पास एक ही आईडी के साथ एक से अधिक तत्व नहीं होना चाहिए। यह एक अमान्य HTML

यह काम करेंगे, लेकिन यदि आप HTML के बजाय ठीक करना चाहिए:

$('div[id="testDiv"]')... 

क्या तुम सच में क्या करना चाहिए है:

<div id="p18"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div class="testDiv"></div> 
    </div> 
</div> 
<div id="p19"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div class="testDiv"></div> 
    </div> 
</div> 

फिर कक्षा से चयन करें:

$('.testDiv')... 
+0

* फेसपाल्म * मुझे विश्वास नहीं है उस एक्सडी धन्यवाद के बारे में भूल गए :) – Skye

+1

@Skye। बस मेरे गुण चयनकर्ता वर्कअराउंड का उपयोग न करें। यह अभी भी एक अवैध HTML है। – gdoron

+0

कोई चिंता नहीं। TestDivs jq के साथ जोड़ा जा रहा है, इसलिए यह एक त्वरित फिक्स है – Skye

1

आपके पास अवैध HTML है। आईडी को अद्वितीय होना चाहिए। आप बदलना चाहिए id="testDiv"class="testDiv" को

एचटीएमएल:

<div id="p20"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div class="testDiv"></div> 
    </div> 
</div> 

जावास्क्रिप्ट:

$('.testDiv').each(function(index, domEle){  
    $(this).text(index); 
}); 
1

आप एक html पृष्ठ में एक ही div id निर्दिष्ट नहीं कर सकते।

<div id="testDiv"></div> 

कि insteed,

<div class="testDiv"></div> 

कोशिश करते हैं और अपने कार्य

$('.testDiv').each(function(index, domEle){  
$(this).text(index); 

की तरह दिखना चाहिए});

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