Javascript 如何使用jQuery切换数据属性?
我需要在数据属性的两个可能值之间切换 如果Javascript 如何使用jQuery切换数据属性?,javascript,jquery,Javascript,Jquery,我需要在数据属性的两个可能值之间切换 如果数据状态等于启用,则我想将其更改为禁用,反之亦然 $('.sites .state').on('ajax:success', function(data, status, xhr) { var site = $(this).parents('article').first(); if (site.data('state') == 'enabled') { site.attr('data-state', 'disabled');
数据状态
等于启用
,则我想将其更改为禁用
,反之亦然
$('.sites .state').on('ajax:success', function(data, status, xhr) {
var site = $(this).parents('article').first();
if (site.data('state') == 'enabled') {
site.attr('data-state', 'disabled');
} else {
site.attr('data-state', 'enabled');
}
});
注意:我需要更改DOM元素,但我不能使用
数据
来执行此操作(因此使用了attr
)
应该是
site.data('state', 'disabled');
创建元素时,data-
属性可用于初始化数据属性,但之后必须使用该方法获取或修改数据
当$(el).data(“”)返回值时,$(el).data(“”,value)
设置数据值
更新:基于更新的需求
$('div').attr('data-state', $('div').attr('data-state') == 'enabled' ? 'disabled' : 'enabled')
不确定问题出在哪里,但既然您使用的是.data()
,那么您最好在if/else中继续使用它。执行.attr('data-state')
将其保存在DOM元素本身上(检查元素时可见),而使用.data('state')
则不可见,而且速度更快
此外,如果使用三元运算符,则可以将其分成一条小行:
site.attr('data-state', site.data('state') === 'enabled'
? 'disabled'
: 'enabled');
我需要更改DOM元素,据我所知,我不能使用数据
(因此使用attr
)。@VisioN查看我的更新。我需要更改DOM元素,据我所知,我不能使用数据来做这件事(因此使用attr)。我需要更改DOM元素,据我所知,我不能使用数据来做这件事(因此使用attr)。
site.attr('data-state', site.data('state') === 'enabled'
? 'disabled'
: 'enabled');
site.data('state', (site.data('state') == 'enabled' ? 'disabled' : 'enabled'))