我有一个函数,可以设置从数据属性、selected-ids 中删除所有值。每当我将 selected-ids 长度设置为零时,数据属性 all-ids 也会被清除,但事实并非如此。如何在不清除所有 id 的情况下清除 selected-id。
文件.js
function deselectAll() {
$('input:checked').each(function(_, element) {
$(element).prop('checked', false);
$('#file-index').data('selected-ids').length = 0;
});
}
function checkAllOnPage() {
$('#selected_files').val('all');
var selected = $('#file-index').data('selected-ids');
$('input[type="checkbox"]:not(:checked)').each(function(_, element) {
$(element).prop('checked', 'checked');
selected.push($(element).val());
});
selected = compact(selected);
toggleHeaderButton();
}
function checkAllOnPages() {
$('#selected_files').val('all');
var selected = $('#file-index').data('selected-ids');
$('input[type="checkbox"]:not(:checked)').each(function(_, element) {
$(element).prop('checked', 'checked');
});
$('#file-index').data('selected-ids', $('#file-index').data('all-ids'));
toggleHeaderButton();
}
index.html.slim
#file-index.files-index data-selected-ids=[] data-all-ids=@file_item_ids
.row
= render partial: 'shared/contents_title', locals: { hide_user_nav: false }
- if @credential.present?
#file-header.row
= render "file_items/header"
最佳答案
设置和更新元素数据对象的属性应直接通过 data()
方法处理,该方法充当具有两个参数的 setter。
如果 selected-ids
是存储在元素数据对象中的数组,则应通过将属性名称和空数组传递给 setter 来重置它。
$('#file-index').data('selected-ids', []);
关于javascript - 设置一个数据属性也会清除其他数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30741387/