获取具有给定属性和类的元素的ID

时间:2016-04-05 12:48:23

标签: javascript jquery

我想要所有元素的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

Here is a fiddle

6 个答案:

答案 0 :(得分:1)

要使所有元素都使用$.each。这将循环遍历所有DOM对象

$.each($('input[data-test].myClass'), function() {
    alert( this.id );
});

https://jsfiddle.net/aoLfe04a/8/

答案 1 :(得分:1)

jQuery attr()返回第一个元素的属性值。

  

获取集合中第一个元素的属性值   匹配的元素或为每个匹配的元素设置一个或多个属性   元件。

使用.each枚举ID:

$('input[data-test], .myClass')
.each(function (i, el) { console.log($(el).attr("id"))})

JsFiddle

答案 2 :(得分:0)

你的选择器应该是这样的:

$('input[data-test][class=myClass]').attr("id")

Fiddle for Single

要获取您需要使用$.each的所有元素的列表,请执行以下操作:

 $.each($('input[data-test][class=myClass]'), function() {
    console.log( this.id );
 });

Fiddle for all Elements

参考:Multiple Attribute Selector

答案 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")保存到一个变量中,检查它的长度,然后如果存在则迭代它多次点击。因为我不相信这是你的问题,我不打算进一步阐述(但我相信其他受访者已经有了)。

参考资料

jQuery Selectors Documentation

答案 5 :(得分:0)

你可以像这样使用jquery循环。

$.each($('input[data-test], .myClass'), function() {
    console.log(this.id);
    alert(this.id);
});