我正在尝试弄清楚如何使用两个属性定位元素,其中一个是数据对象。
拿这个代码......
HTML:
<div data-div></div>
使用Javascript:
$(document).ready(function () {
var m = { "Name": "John", "Age": 38 };
$("[data-div]").data("user", m);
$("[data-div]").html($("[data-div]").data("user").Name);
$("[data-div][data-user-Name='John']").html("YES!"); // <-- doesn't work
});
在上面的最后一行中,我尝试通过数据键和数据对象(user = John)获取元素。
我怎么能这样做,因为以上不起作用?
这是一个小提琴样本...... http://jsfiddle.net/VcjE3/
答案 0 :(得分:2)
问题是$("[data-div]").data("user", m);
will not create a data-*
attribute。这不是.data()
。 .data()
并不意味着添加data-*
属性&#34;而是用于向特定节点添加任意数据。
您必须使用attr()
添加data-*
属性:
$("[data-div]").attr({
"data-user-name": "John",
"data-user-age": 38
});
要搜索jQuery数据值,请尝试以下操作:
$("[data-div]").filter(function(){
return $(this).data("user").Name == "John";
});
答案 1 :(得分:0)
如果使用.data('')
设置数据值,则不会将其存储为属性。
您必须使用.attr('data-user-name','John')
设置属性,或者必须使用filter()
函数找到该元素:
$('[data-div]').filter(function(){
return $(this).data('user').Name == 'John';
});