2012-07-23 16 views
7
<div id="ChosenCategory" class="chosen"> 
    <div class="cat_ch" name="1"> 
    <div class="cat_ch" name="2"> 
    <div class="cat_ch" name="3"> 
    <div class="cat_ch" name="5"> 
    <div class="clear"> </div> 
</div> 

मैं div.cat_ch हालांकि लूप करना चाहता हूं कैसे?बाल divs के माध्यम से jQuery लूप

यह एक विफल रहता है:

$("div").each(function() { 
     alert("FW"); 
     alert($(this).attr("name").val()); 
    }); 
+1

एक सूची की तरह लग रहा। इसलिए, यूएल/एलआई होना चाहिए, डीआईवी/डीआईवी नहीं। साथ ही, यदि आप माता-पिता पर 'ओवरफ़्लो: ऑटो' सेट करते हैं तो "स्पष्ट" DIV से बचा जा सकता है। –

+0

$ ('cat_ch')।प्रत्येक (function() {}); – jeschafe

+0

मुझे पूरा यकीन है कि 'name'' div' तत्व की मान्य विशेषता नहीं है। –

उत्तर

3

http://jsfiddle.net/2TRxh/

मैं आपकी समस्या div बंद वैल पाने के लिए आप विशेषता $(this).attr("name").val() पाने के बाद प्रयास के साथ निहित है लगता है। Div पर .val() का उपयोग करना समझ में नहीं आता है। यदि आप $(this).attr("name") हटाते हैं तो divs से name संपत्ति लौटाती है। आप div के बजाय प्रत्येक में क्लास चयनकर्ता का उपयोग कर div के लूप को आगे निर्दिष्ट कर सकते हैं। $(".cat_ch").each(function() {}); यह इस प्रश्न के विभिन्न अन्य उत्तरों में दिखाया गया है।

1
$(".cat_ch").each(function() { 
     alert("FW"); 
     alert($(this).attr("name").val()); 
    }); 
1

आप div.cat_ch लूप करने के लिए चाहते हैं, आप jQuery चयनकर्ता के लिए उपयोग करना चाहिए कि:

$("div.cat_ch").each(function() { 
    alert("FW"); 
    alert($(this).attr("name").val()); 
}); 

भी कर सकते हैं बच्चे तत्वों के माध्यम से लूप jQuery children() विधि का उपयोग करके:

$("#ChosenCategory").children().each(function() { 
    alert("FW"); 
    alert($(this).attr("name").val()); 
}); 

वांछित तत्वों लूप करने के लिए एक तीसरा रास्ता इतना की तरह है:

$("#ChosenCategory > div").each(function() { 
    alert("FW"); 
    alert($(this).attr("name").val()); 
}); 

जो भी रास्ता उपयोग आप चाहते हैं, वहाँ कोई सबसे अच्छा तरीका है।

12
$('#ChosenCategory').children('.cat_ch').each(function() { 

}); 

या

$('#ChosenCategory > .cat_ch').each(function() { 

}); 

JQuery के .children विधि और css3 बच्चे चयनकर्ता > केवल प्रत्यक्ष बच्चों कि चयनकर्ता, वर्ग .cat_ch उदाहरण में से मेल खाते हैं वापस आ जाएगी।

आप डोम पेड़ में गहरी खोज करने के लिए चाहते हैं, कि है, नेस्टेड तत्वों में शामिल हैं, .find का उपयोग करें या बच्चे चयनकर्ता छोड़ देते हैं:

$('#ChosenCategory').find('.cat_ch').each(function(){}) 

या

$('#ChosenCategory .cat_ch').each(function(){}) 
1
$('.cat_ch').each(function(i, e) { 
    alert('FW'); 
    alert(e.attr('name').val()); 
}); 
4

आप तो केवल divs को लक्षित करना चाहते हैं,

$('#ChosenCategory div').each(function() {...}); 

अन्य उत्तरों को विशिष्ट कक्षाओं की आवश्यकता होती है और/या आपके मूल div के भीतर गैर-divs को भी संसाधित करेगा।

+0

चेतावनी दी जानी चाहिए! यह आपके "स्पष्ट" div को भी दबाएगा, आप $ ('# ChosenCategory div: नहीं (.clear)' कर सकते हैं) इसके बजाय – tigertrussell

+0

हाँ, फिर आप चयनकर्ता को '$ ('# ChosenCategory' में क्यों नहीं बदलते div.cat_ch ') '? – Stano

+0

हालांकि ओपी के पास उन कक्षाएं थीं, लेकिन सवाल वास्तव में "बाल divs के माध्यम से लूप" के रूप में phrased किया गया था, इसलिए मैं एक जवाब देना चाहता था जो दर्शाता है कि उनके नामों के बावजूद बाल divs के माध्यम से कैसे लूप करना है। पेज लेआउट अक्सर ऐप के विकास में बदलता है, और कभी-कभी अलग-अलग चयनकर्ताओं से मेल खाने के लिए अपने जावास्क्रिप्ट को फिर से लिखना अच्छा नहीं होता है। – tigertrussell

2
 
    function loopOver(obj) 
    { 
     var chl=obj.firstChild; 
     while(chl) 
     { 
      if(chl.nodeType==1) 
      { 
       var isAttr=chl.getAttribute('name'); 
       if(isAttr) 
       { 
        alert(isAttr); 
       } 
      } 
      chl=chl.nextSibling; 
     } 
    } 

    //This is by far the fastest in terms of execution speed!!! 
    var obj=document.getElementById("ChosenCategory"); 
    loopOver(obj); 
Make sure to enclose the each `<div>` tag at the end of each!!