根据属性值在DOM中查找元素

你能告诉我,如果有任何DOM APIsearch具有给定属性名称和属性值的元素:

就像是:

doc.findElementByAttribute("myAttribute", "aValue"); 

更新:在过去的几年中,景观发生了巨大的变化。 你现在可以可靠地使用querySelectorquerySelectorAll ,看看Wojtek的答案是如何做到这一点的。

现在不需要jQuery依赖。 如果你使用的是jQuery,那么…如果你不是,那么你不需要依赖它来select属性。


在vanilla javascript中,这样做的方法不是很简单,但是有一些解决scheme可用。

你做这样的事情,循环遍历元素并检查属性

如果像jQuery这样的库是一个选项,你可以做得更容易一点,就像这样:

 $("[myAttribute=value]") 

如果该值不是一个有效的CSS标识符 (它有空格或标点符号等),则需要引用该值(可以是单个或双精度):

 $("[myAttribute='my value']") 

你也可以用start-withends-withcontains等… 属性select器有几个选项 。

现代的浏览器支持本地的querySelectorAll所以你可以这样做:

 document.querySelectorAll('[data-foo="value"]'); 

https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll

浏览器兼容性详情:

您可以使用jQuery来支持过时的浏览器(IE9及以上版本):

 $('[data-foo="value"]'); 
 FindByAttributeValue("href","something_value_you_need"); 

但是起初,定义这个函数:

 function FindByAttributeValue(attribute, value) { var All = document.getElementsByTagName('*'); for (var i = 0; i < All.length; i++) { if (All[i].getAttribute(attribute) == value) { return All[i]; } } } 

这里是一个例子,如何通过src属性在文档中search图片:

 document.querySelectorAll("img[src='https://pbs.twimg.com/profile_images/........jpg']"); 

你可以使用getAttribute:

  var p = document.getElementById("p"); var alignP = p.getAttribute("align"); 

https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute