在jQuery中查找所有具有特定属性值的元素

96

我需要查找所有具有特定属性值的元素。

这是我需要查找的 div(我有很多这样的 div..)

<div imageId='imageN'>...

我只需要循环遍历那些具有 imageId='imageN' 的 div 元素。


6
出于HTML的有效性考虑,我建议您使用class="imageN"或者为了HTML5的有效性考虑使用data-imageId="imageN"。如果您选择前者,就可以使用类选择器来选择这个元素。请注意,我的翻译尽可能保留了原文的意思和风格,同时让它更加通俗易懂。 - Andy E
Andy,这背后的原因是,这些div是从代码后端动态添加的,并且具有不同的ImageIds但相同的类。 - Pabuc
3
如果有帮助的话,你可以使用多个类 class="image imageN" - Val
为什么不根据类名进行选择,如果它们已经具有相同的类? - Praxis Ashelin
5个回答

177

虽然它并没有准确回答这个问题,但我在搜索一种获取元素集合的方法时(可能有不同的标签名称),这些元素仅具有给定属性名称(而不通过属性值进行过滤),就来到了这里。我发现以下方法对我很有效:

$("*[attr-name]")

更新: 根据一些基本测试,似乎星号不是必需的,也就是说,以下内容与上述内容等效(感谢Matt指出):

$("[attr-name]")

完美!正是我所寻找的。 - Paulius Matulionis
很可能...我没有检查性能方面(当时对我的使用不是重要因素)。 - sammy34
3
$("[attr-name]")相比,这种方法有什么不同之处吗?(即没有* - Matt
是的,它们之间确实存在一定的差异。星号表示法在 Firefox 上会引发错误!!!(未转义...) - Oguz Karadenizli
此外,您还可以添加属性值,例如:$("[data-toggle='modal']") - MeltingDog
这应该是正确的答案,因为“所有元素”与“所有DIV”不同。所选答案仅获取div元素,而此答案获取包括输入、列表等在内的所有内容。如果性能很重要,请限制您想要查找元素的位置,例如$("[data-toggle ='modal']",$(body)) - Frohlich

162
$('div[imageId="imageN"]').each(function() {
    // `this` is the div
});

为了检查属性的唯一存在性,无论其值是什么,你可以使用以下选择器:$('div[imageId]')


4
如果属性值不是固定的(即它会变化),那么如何找到它? - Developer
几个问题:1-其他元素怎么办...2-其他值怎么办...我可能在许多元素上有属性data-food:div、img和td,每个元素都有不同的值。 - dsdsdsdsd
@ParthoGanguly 你可以这样使用变量:$('div[imageId="' + variableName + '"]') - Kama
1
这个解决方案并没有真正回答这个页面的标题。您正在搜索div元素。一个合适的解决方案应该是不受实际元素影响的。 - Johann

16

它不被称为标签,你要找的是被称为HTML属性。

$('div[imageId="imageN"]').each(function(i,el){
  $(el).html('changes');
  //do what ever you wish to this object :) 
});

你会如何寻找逆元? - Tim Bogdanov

6
您可以使用属性的部分值来使用(^)符号检测DOM元素。 例如,您有这样的div:
<div id="abc_1"></div>
<div id="abc_2"></div>
<div id="xyz_3"></div>
<div id="xyz_4"></div>...

您可以使用以下代码:
var abc = $('div[id^=abc]')

这将返回一个DOM数组,其中包含以abc开头的div:
<div id="abc_1"></div>
<div id="abc_2"></div>

这是一个演示: http://jsfiddle.net/mCuWS/

6
使用字符串连接。 尝试这样做:
$('div[imageId="'+imageN +'"]').each(function() {
    $(this);   
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接