javascript - 设置一个数据属性也会清除其他数据属性

标签 javascript jquery html

我有一个函数,可以设置从数据属性、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/

相关文章:

javascript - 基于另一个选择的ajax选择

javascript - 排序数组的问题

javascript - 使用javascript在浏览器中每小时弹出一条消息

javascript - 如何将 jquery 对象传递给 history.pushState

javascript - 使用两个 setTimeout 函数后图像变得疯狂

javascript - 禁用 iframe 文本区域

javascript - HTML 有没有办法将日期输入中的年份限制为 4 位数字

javascript - 尽管 CSS 相同,但我网站上的一个 div 比另一个高。为什么?

javascript - Extjs 4.0 中将组合框与一个商店链接起来

javascript - 表头固定在固定页眉下方