首页 > 解决方案 > 在 JavaScript 中单击删除多个项目

问题描述

我想从购物车中删除项目,但我需要删除多个项目,所以我创建了一个数组 id,并使用 push 将我想要删除的项目的 id 添加到用户选中复选框时的数组中,这样我就可以处理所有内容按钮单击,但是当我单击时submit出现错误 ids.push 不是功能,任何人都可以帮助我解决这个问题,甚至更好地实现相同的功能。下面是我的代码示例 JS FIDDLE

在下面的小提琴中,当我单击“是”按钮时,我总是得到 1 我怎么能做到,所以当我选中一个复选框时,我会得到数据 ID。

var ids = [];
$(".delCartCheck").click(function() {
  id = $(this).attr('data-id');
  ids = ids.push(id);
});

$('#confirm-delete').on('click', function(e) {
  alert(ids);

  function deletecart(ids) {

    $.ajax({
      url: delUrl,
      type: 'POST',
      data: {
        id: ids
      },
      success: function(data) {
        if (data === 'success') {
          window.location = url + data;
        } else {
          window.location = url + data;
        }
      },
      error: function(jqXHR, errMsg) {
        // handle error
        console.log(errMsg);
      }
    });
  }

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="pull_left checkbox-wrap itemDel" title="delete item">
  <label class="check_container " style="top:40px;">
           <input type="checkbox" class="delCartCheck" data-id="1">
           <span class="checkmark"></span>
      </label>
</div>
<div class="pull_left checkbox-wrap itemDel" title="delete item">
  <label class="check_container " style="top:40px;">
             <input type="checkbox" class="delCartCheck" data-id="2">
             <span class="checkmark"></span>
       </label>
</div>
<div class="pull_left checkbox-wrap itemDel" title="delete item">
  <label class="check_container " style="top:40px;">
          <input type="checkbox" class="delCartCheck" data-id="3">
          <span class="checkmark"></span>
      </label>
</div>

<button type="button" id='confirm-delete'>Yes</button>
<button type="button" class="">No</button>

标签: javascriptjquery

解决方案


因为您将push方法返回状态分配给变量ids = ids.push(id);

ids = ids.push(id);这不是返回数组,而是返回状态 true 或 false。所以真的意味着它的1。所以ids==1ids变成了一个普通的变量而不是一个数组。所以对于普通数组没有push功能。

尝试这样的事情:

var ids = [];
$(".delCartCheck").click(function() {  
  ids = [];
  $(".delCartCheck:checked").each(function(){
    id = $(this).attr('data-id');
    ids.push(id);
  });  
});

https://jsfiddle.net/x7mys0ac/41/


推荐阅读