我想要所有元素的ID,它们同时具有属性data-test
和类myClass
。
所以在这种情况下只有elem3
,因为它是唯一符合这两个标准的元素:
<input type="text" data-test="someValue" id="elem1" />
<input type="text" class="myClass" id="elem2" />
<input type="text" class="myClass" data-test="someValue" id="elem3" />
用
$('input[data-test], .myClass').attr("id")
我只获得elem1
,而不是elem3
。
答案 0 :(得分:1)
要使所有元素都使用$.each
。这将循环遍历所有DOM对象
$.each($('input[data-test].myClass'), function() {
alert( this.id );
});
答案 1 :(得分:1)
jQuery attr()返回第一个元素的属性值。
获取集合中第一个元素的属性值 匹配的元素或为每个匹配的元素设置一个或多个属性 元件。
使用.each枚举ID:
$('input[data-test], .myClass')
.each(function (i, el) { console.log($(el).attr("id"))})
答案 2 :(得分:0)
你的选择器应该是这样的:
$('input[data-test][class=myClass]').attr("id")
要获取您需要使用$.each
的所有元素的列表,请执行以下操作:
$.each($('input[data-test][class=myClass]'), function() {
console.log( this.id );
});
答案 3 :(得分:0)
您可以使用
$('input.myClass[data-test]').map(function(){
return this.id
});
将提供一系列ID
答案 4 :(得分:0)
<强>解决方案强>
如果您的目标是找到同时具有data-test属性和myClass类的单个元素,则应该从此更改脚本...
$('input[data-test], .myClass').attr("id")
......对此...
$('input[data-test].myClass').attr("id")
<强>解释强>
用逗号分隔两个条件意味着您将获得符合 条件的所有内容。在这种情况下,这是所有三个元素。你只看到elem1的原因是因为在数组上调用.attr("id")
只返回第一个元素的id。
将输入和类选择器推送到我的略微修改的代码行中,只返回满足这两个条件的元素。
其他强>
如果你可能会返回多个元素,并且你想要一个id的数组,你必须将$('input[data-test], .myClass').attr("id")
保存到一个变量中,检查它的长度,然后如果存在则迭代它多次点击。因为我不相信这是你的问题,我不打算进一步阐述(但我相信其他受访者已经有了)。
参考资料
答案 5 :(得分:0)
你可以像这样使用jquery循环。
$.each($('input[data-test], .myClass'), function() {
console.log(this.id);
alert(this.id);
});