<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());
});
答案 0 :(得分:12)
$('#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(){} )
答案 1 :(得分:5)
$(function(){
var items=$(".cat_ch")
$.each(items,function (index,item) {
alert($(item).attr("name"));
});
});
答案 2 :(得分:4)
如果您只想定位内部的Div,请尝试
$('#ChosenCategory div').each( function() {...} );
其他答案需要特定的类和/或也会处理父div中的非div。
答案 3 :(得分:3)
我认为你的问题在于获得属性$(this).attr("name").val()
后尝试从div中获取val。在div上使用.val()
没有意义。如果删除$(this).attr("name")
,则会从div返回name
属性。您可以通过在每个而不是div中使用类选择器来进一步指定要循环的div。 $(".cat_ch").each(function () {});
此问题的其他各种答案都显示了这一点。
答案 4 :(得分: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!!
答案 5 :(得分:1)
$(".cat_ch").each(function () {
alert("FW");
alert($(this).attr("name").val());
});
答案 6 :(得分: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());
});
使用您想要的任何方式,没有最好的方法。
答案 7 :(得分:1)
$('.cat_ch').each(function(i, e) {
alert('FW');
alert(e.attr('name').val());
});