我尝试找到具有特定属性的所有元素。对于每个元素,我想做一些取决于属性值的事情。
我做了一个测试来收回属性的值,但它没有工作,我也没有看到问题。
HTML:
<div id="t">Test</div>
<div data-test="One">Value One</div>
<div data-test="Two">Value Two</div>
JS:
$("[data-test]").each(function(){
$("#t").append(this.attr("data-test"));
});
JsFiddle链接:http://jsfiddle.net/fbue5dpc/
谢谢!
答案 0 :(得分:4)
this
块中的 each
指的是没有attr
方法的DOM元素。您应该使用$(this)
将其转换为jQuery对象。您还可以使用data
方法检索值并缓存#t
元素以减少正在进行的DOM检索次数来进一步改进:
var $t = $('#t')
$("[data-test]").each(function(){
$t.append($(this).data('test'));
});
答案 1 :(得分:2)
var elemnt = $("[data-test]"),frag = "";
elemnt.each(function () {
frag += $(this).attr("data-test");
});
$("#t").append(frag);
<强> Working DEMO 强>
答案 2 :(得分:1)
尝试,
$(this).attr("data-test")
说明:在foreach循环内部,您将获得dom元素,因为您正在迭代dom元素列表。所以你不能直接从dom elemet调用jquery方法来执行此操作,你必须将它转换为jquery对象来执行此操作只需使用$(this)
答案 3 :(得分:0)
$("div[id!='t']").each(function(){
$("#t").append($(this).data('data-test'));
}