jQuery数据attr没有设置

ggd*_*gdx 20 javascript jquery

这看起来很简单,但我不明白为什么它不起作用.选择器是正确的但是div .faqContent不是用data-height属性更新的.

$('.faqItem .faqContent').each(function(){
    var h = $(this).height();
    $(this).data('height',h);
});
Run Code Online (Sandbox Code Playgroud)

我检查过这 var h是正确的,它在colsole.log中正确地保持高度.

编辑 绝对没有冲突,控制台显示没有错误.

T.J*_*der 66

这个data功能让很多人感到困惑,不仅仅是你.:-)

data管理jQuery的元素内部数据对象,而不是 data-*属性.data仅使用data-*属性来设置初始值.它永远不会在元素上设置 data-*属性.

如果要实际设置data-*属性,请使用attr:

$(this).attr("data-height", h);
Run Code Online (Sandbox Code Playgroud)

但是如果您只是想将此信息用于将来使用,那么data就好了,不要指望在DOM检查器中看到它,因为jQuery不会将此信息写入DOM.

  • 很好的答案,解开了数据属性的神秘面纱.帽子! (3认同)

Moh*_*dil 28

您将无法在元素检查器中看到它,但它在那里,因为jquery在内部设置了data属性.

尝试 console.log($(this).data('height'));

  • 多么令人困惑!糟糕的设计.谢谢你:) (4认同)