搜索整个DOM中的所有属性以获取文本

时间:2017-07-27 07:22:17

标签: jquery

我需要在整个DOM中搜索文本,但是想要将搜索限制为属性(属性)。如果您已经知道他们的名字,我只知道搜索属性。例如:

$(document).find("[name='description']");

但我想要的是:

$(document).find("[*='description']");

2 个答案:

答案 0 :(得分:2)

没有一点魔力,我不知道是否可能。

但是这是通过一点扩展来实现它的一种方法。

$.expr[":"].FindAttrByValue = function(element, index, ElVal){
    var g = $(element.attributes).filter(function () {
        return this.value === ElVal[3];
    }).length;
    if (g > 0) {
        return element;
    }
};
var e =$(document).find('*:FindAttrByValue("description")');
console.log(e.text())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div custom="description">test</div>

答案 1 :(得分:1)

我不确定这是否是最漂亮的解决方案,因为它要求您遍历页面上的所有元素,但是您可以检查所有元素的attributes属性。

$(function() {
  $("*").each(function() {
    var $el = $(this);
    $.each(this.attributes, function() {
      if (this.value=='description') {
        console.log('Found for attribute "'+this.name+'".');
        console.log('Text: '+$el.text());
      }
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-test1="description">test1</div>
<div data-test2="bla" id="description">test2</div>
<div data-test3="bla bla" class="description">test3</div>
<div data-test4="description" class="description">test4</div>