jQuery选择器和HTML5 data-*属性动态设置

Tom*_*cía 14 jquery jquery-selectors

我有这个工作:

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

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

但是这个不起作用,我不知道如何解决:

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

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

    alert($("[data-people=australian]").html());
  </script>
Run Code Online (Sandbox Code Playgroud)

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

非常感谢

its*_*dok 37

data-jQuery data()映射的属性是单向的.如果要在节点上实际设置属性,则应使用attr()函数.

$("#mich").attr("data-people", "australian");
Run Code Online (Sandbox Code Playgroud)

来自文档:

数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(然后所有数据值都在内部存储在jQuery中)

  • 令人非常疯狂的是,jQuery自己的数据选择器不会考虑到这一点并检查其数据缓存.使`.data()`不那么有用,也是难以追踪错误的根源. (2认同)