10
<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如何?

这个失败了:

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

8 回答 8

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

});

或者

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

});

JQuery 的.children方法和 css3 子选择器>将仅返回与选择器匹配的直接子代,.cat_ch示例中为类。

如果要在 DOM 树中进行更深的搜索,即包含嵌套元素,请使用.find或省略子选择器:

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

或者

$('#ChosenCategory .cat_ch').each( function(){} )
于 2012-07-23T19:57:57.487 回答
7
$(function(){

    var items=$(".cat_ch")
     $.each(items,function (index,item) {

       alert($(item).attr("name"));
    });

});

工作样本:http: //jsfiddle.net/GzKHA/

于 2012-07-23T20:04:57.857 回答
4

http://jsfiddle.net/2TRxh/

我认为您的问题在于在获得属性后尝试从 div 中获取 val $(this).attr("name").val()。在 div 上使用.val()没有意义。如果您删除该属性,则会从 div中$(this).attr("name")返回该属性。name您可以通过在 each 而不仅仅是 div 中使用类选择器来进一步指定要循环的 div。$(".cat_ch").each(function () {});这已在该问题的各种其他答案中得到体现。

于 2012-07-23T20:10:48.000 回答
4

如果您只想定位内部的 Divs,请尝试

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

其他答案需要特定的类和/或还将处理您的父 div 中的非 div。

于 2012-07-23T20:00:08.433 回答
2
    函数 loopOver(obj)
    {
        var chl=obj.firstChild;
        而(chl)
        {
            如果(chl.nodeType==1)
            {
                var isAttr=chl.getAttribute('name');
                如果(是属性)
                {
                    警报(isAttr);
                }
            }
            chl=chl.nextSibling;
        }
    }

    //这是迄今为止执行速度最快的!!!
    var obj=document.getElementById("ChosenCategory");
    循环(对象);
    
Make sure to enclose the each `<div>` tag at the end of each!!
于 2012-07-23T20:24:45.623 回答
1
$(".cat_ch").each(function () {
       alert("FW");
       alert($(this).attr("name").val());
    });
于 2012-07-23T19:57:05.623 回答
1

如果你想循环div.cat_ch,你应该使用 jQuery 选择器:

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

您还可以使用 jQuerychildren()方法循环遍历子元素:

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

循环遍历所需元素的第三种方法如下:

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

使用任何你想要的方式,没有最好的方式。

于 2012-07-23T19:57:19.577 回答
1
$('.cat_ch').each(function(i, e) {
    alert('FW');
    alert(e.attr('name').val());
});
于 2012-07-23T19:59:55.873 回答