Can';t使用jQuery将值设置为数据属性

Can';t使用jQuery将值设置为数据属性,jquery,html,Jquery,Html,出于某种原因,我无法理解,$('element').data('data\u attribute\u name','value')语法在此处不起作用: HTML: 第二行起作用(应用黄色边框),第二行不起作用。为什么?第一行工作正常。data()方法将值存储在内存缓存中,这样由于查询DOM的频率较低,因此速度更快(至少在理论上)。它根本不更新DOM 只要您还使用data()的getter来检索值,这就非常有效: var$list=$('.main_菜单__列表'); $list.data('s

出于某种原因,我无法理解,
$('element').data('data\u attribute\u name','value')语法在此处不起作用:

HTML:


第二行起作用(应用黄色边框),第二行不起作用。为什么?

第一行工作正常。
data()
方法将值存储在内存缓存中,这样由于查询DOM的频率较低,因此速度更快(至少在理论上)。它根本不更新DOM

只要您还使用
data()
的getter来检索值,这就非常有效:

var$list=$('.main_菜单__列表');
$list.data('scheme','dark').css('border','10px实心黄色');
//要检索属性,请执行以下操作:
console.log($list.data('scheme'));//黑色“

    使用以下方法:

    $('.main_menu__list').attr('data-scheme', 'dark');
    
    与此相反:

    $('.main_menu__list').data('scheme', 'dark');
    

    因此data()不会改变DOM。没错,但即使按照另一个答案中的建议使用attr(),也不会改变它!是的。我更新了我的答案,向您展示了通过
    attr()
    更新的DOM-尽管我强烈建议您坚持使用
    data()
    instead,但attr()现在可以工作了。但是试图更改我的“数据方案”属性的值肯定不起作用:(啊,是的,它现在起作用了,缓存问题。谢谢!
    $('.main_menu__list').attr('data-scheme', 'dark');
    
    $('.main_menu__list').data('scheme', 'dark');