如何使用 jQuery 切换数据属性
How to toggle data attribute with jQuery?
我需要在数据属性的两个可能值之间切换。
如果data-state
等于enabled
那么我想将其更改为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 元素,据我所知,我不能使用 data
来做到这一点(因此使用 attr
)。
site.attr('data-state', 'disabled');
应该是
site.data('state', 'disabled');
创建元素时,可以使用 data-<value>
属性初始化 data 属性,但之后您必须使用 jQuery.data() 方法来获取或修改数据。
当$(el).data('<data-name>')
返回值时,$(el).data('<data-name>', value)
设置数据值。
已更新:基于更新的要求
$('div').attr('data-state', $('div').attr('data-state') == 'enabled' ? 'disabled' : 'enabled')
小提琴
不太确定问题是什么,但是既然您正在使用.data()
,您不妨继续在if/else中使用它。执行.attr('data-state')
将其保存在 DOM 元素本身(检查元素时可见),而使用 .data('state')
它是不可见的,而且速度更快。
此外,如果您使用三元运算符,您可以将其分成 1 条小线:
site.attr('data-state', site.data('state') === 'enabled'
? 'disabled'
: 'enabled');
site.data('state', (site.data('state') == 'enabled' ? 'disabled' : 'enabled'))
相关文章:
- jQuery最近父级的数据属性选择器
- 函数jquery.html()不提供数据属性集值
- 使用jQuery获取第N个元素的数据属性值
- 根据jquery数据属性值进行查询
- 使用jQuery在select选项上设置HTML数据属性
- jQuery:从数据属性中删除除前4个字符外的所有字符
- JavaScript / jquery:如果选择了单选按钮并且数据属性符合条件,则添加类
- 如何在 jQuery 中存储复杂对象/Razor 中的数据属性
- jQuery TinySort按数据属性排序和放置
- 将数据属性从锚点元素传递到jQuery函数
- 扫描具有相同命名和插入值的所有数据属性-jQuery
- jQuery parent或parents以获取表th标记中的数据属性
- 查找具有特定数据属性jQuery的元素
- 基本JQuery:数据属性+子项()差异
- 如何使用jquery获取数据属性的值
- jQuery没有't返回新的数据属性
- 使用jQuery,如何在元素上或元素内查找数据属性?(树遍历)
- 查找具有特定数据属性 jquery 的最接近的上一个元素
- 筛选数据属性 jQuery
- 数据属性 jQuery 的最高和最低