我有一个函数,可以从数据属性selected-id中删除所有值。每当我将selected-id长度设置为零时,数据属性all-id也会被清除,它不应该被清除。如何在不清除all-id的情况下清除selected-id。
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();
}
#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"
答案 0 :(得分:2)
设置和更新元素数据对象的属性应该直接通过data()
方法处理,作为具有两个参数的setter。
如果selected-ids
是存储在元素数据对象中的数组,则应通过将属性的名称和空数组传递给setter来重置它。
$('#file-index').data('selected-ids', []);
答案 1 :(得分:1)
尝试使用以下代替$('#file-index')。data('selected-ids')。length = 0;
$('#file-index').removeData('selected-ids');