我需要在整个DOM中搜索文本,但是想要将搜索限制为属性(属性)。如果您已经知道他们的名字,我只知道搜索属性。例如:
$(document).find("[name='description']");
但我想要的是:
$(document).find("[*='description']");
答案 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>