javascript - 在 JavaScript 中单击一次删除多个项目

标签 javascript jquery

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

在下面的 fiddle 中,当我单击"is"按钮时,我总是得到 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>

最佳答案

你可以这样做:https://jsfiddle.net/x7mys0ac/46/

如果选中复选框,push data-id else splice 以从数组中删除一个元素。

var ids = [];
$(".delCartCheck").click(function() {
  if($(this).prop("checked")){
        ids.push($(this).attr('data-id'));
  } else{
       var x = ids.indexOf($(this).attr('data-id'));
       ids.splice(x,1);
   }
  console.log(ids)
});

$('#confirm-delete').on('click', function(e) {
var newArray = ids.filter(function(v){return v!==''});
alert(newArray)
  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);
      }
    });
  }

});

关于javascript - 在 JavaScript 中单击一次删除多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51019200/

相关文章:

javascript - 包含javascript函数,在android上不起作用

javascript - 控制台将内部 Html 记录为 Javascript 中的单行字符串

javascript - 单击时将按钮 ID 附加到输入值

javascript - 选择选项的格式错误 - JQuery

jquery - bootstrap 2.3.2 popover html 内容问题

javascript - Angular .config 中的自定义提供程序

javascript - 如果它在滚动时改变高度,我该如何修复原始标题下的 div?

javascript - 如果在 70% 上可见,则匹配 getBoundingClientRect JS

javascript - 使用 jquery 从 html <a> 元素获取数据集项

jquery - 我怎样才能让这个插件不超过屏幕?