2012-12-26 27 views
13

我有这样的工作:jQuery选择和HTML5数据 - *属性设置动态

<div data-people="australian">Australian people eats...</div> 

    <script type="text/javascript"> 
    alert($("[data-people=australian]").html()); 
    </script> 

但这其他不工作,我不知道如何解决:

<div id="mich">Australian people eats...</div> 

    <script type="text/javascript"> 
    $("#mich").data("people", "australian"); 

    alert($("[data-people=australian]").html()); 
    </script> 

为什么我无法从jQuery设置data- * HTML5属性并使用它们来选择DOM对象?

地块感谢

+0

是你的问题“为什么”或“如何解决”?也许看看http://stackoverflow.com/questions/13094777/find-elements-by-custom-data-attribute-value/13094850#13094850。 – pimvdb

+0

可能重复[为什么不更改jQuery $ .fn.data()更新相应的html 5数据 - \ *属性?](http://stackoverflow.com/questions/5507718/why-dont-changes- to-jquery -fn-data-update-the-corresponding-html-5-data-a) – itsadok

回答

35

data-属性jQuery的数据()映射是单方向的。如果你想在节点上真正设置属性,你应该使用attr()函数。

$("#mich").attr("data-people", "australian"); 

docs:

Data-用属性被拉到在第一时间中的数据属性被访问,然后不再访问或突变的(所有数据值然后被存储在内部的jQuery)

+2

我爱你!精彩的工作! –

+1

jQuery自己的数据选择器没有考虑这个问题并检查它的数据缓存,这是非常疯狂的。使'.data()'不太有用,也很难追踪错误。 – Thor84no