【问题标题】:Set data attribute to div with jQuery使用jQuery将数据属性设置为div
【发布时间】:2014-03-21 09:44:20
【问题描述】:

我正在尝试将数据属性设置为以前没有任何值的 div。

<div></div>

使用 jQuery,第一个方法(数据)不做任何事情,但是 attr 方法可以正常工作。

var div = $('div');
div.data('superhero_one','batman');
div.attr('data-superhero_two','spiderman');

http://jsfiddle.net/5bT8p/

我是不是用错了数据函数?

【问题讨论】:

    标签: javascript jquery attributes jquery-data


    【解决方案1】:

    确实有效!

    这背后的实际情况是,当您使用.data() 时,您看不到实际属性,因为 jquery 在内部设置了该属性。 但是.attr() 为元素添加了一个属性,您可以检查它。

    看这个演示--&gt;http://jsfiddle.net/5bT8p/1/

    【讨论】:

    • 所以为了“在外部”看到它,我只能使用 attr()?
    • @Alvaro 是的。但是,为什么您需要“从外部”看到这一点
    • 我正在使用 skrollr,虽然它是直接在 html 中应用数据属性的,但我想在插件中应用 init 之前用 javascript 控制它们。谢谢
    • 我也是.data() 不工作,但如果我用于.attr() 它工作。
    【解决方案2】:
    $("div").data("superhero_two","spiderman");
    

    是正确的语法。但是在检查时,我只看到data-superhero_two="spiderman"(如预期的那样)。 .attr 的属性在 DOM 中设置,.data 仅在 JQuery 对象中设置

    顺便说一下,使用文档就绪功能确保其在正确的时间执行:

    $(document).ready(function() {
        $("div").data("superhero_two","spiderman");
    });
    

    【讨论】:

      【解决方案3】:
      $("div").data("superhero_two","spiderman");
      

      我建议您阅读.data() | jQuery API Documentation。您会在那里找到很多设置和获取数据属性的示例。

      这是 jsfiddle 上的一个使用示例:http://jsfiddle.net/yrshaikh/293nk/1/

      【讨论】:

      • 我读了它,但这并没有做它应该做的事情。至少 Chrome 根本没有显示 div 已更改。仅使用 attr()
      • 正如其他人所说,它作为 jQuery 对象工作,但不反映在 DOM 中。谢谢:)
      【解决方案4】:

      工作正常,因为他们有不同的行为,jQuery.data

      存储与匹配元素关联的任意数据或返回 集合中第一个元素在命名数据存储中的值 匹配的元素。

      因此您的元素不会设置任何 html 属性,但键值对存储在 jQuery 对象引用中。

      简而言之,$.data 用于存储信息而不对 DOM 元素进行任何更改,attr 用于操作元素的属性。

      演示:http://jsfiddle.net/5bT8p/3/

      【讨论】:

      • 那我误解了它的工作原理,我应该使用 attr() 来实际应用数据对吗?谢谢
      • 这取决于,如果你想操作 DOM 属性使用 attr (我认为是你的情况),如果你想存储数据使用,数据;添加在答案中
      猜你喜欢
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      相关资源
      最近更新 更多