如何从对象数据中找到元素?

时间:2014-02-15 22:17:47

标签: javascript jquery

我正在尝试弄清楚如何使用两个属性定位元素,其中一个是数据对象。

拿这个代码......

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/

2 个答案:

答案 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';
});