Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery切换数据属性?_Javascript_Jquery - Fatal编程技术网

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'))