【问题标题】:Delete checked checkboxes in jQuery删除 jQuery 中的选中复选框
【发布时间】:2014-12-31 02:20:36
【问题描述】:

我正在尝试删除 jQuery 中选中的复选框,但是当我想获取复选框的状态时,我收到了错误消息。

jsfiddle

    <div class="control-group">

<label class="checkbox"><input value="0" type="checkbox">Message 0</label>
<label class="checkbox"><input value="1" type="checkbox">Message 1</label>
<label class="checkbox"><input value="2" type="checkbox">Message 2</label>
<label class="checkbox"><input value="3" type="checkbox">Message 3</label>
<label class="checkbox"><input value="4" type="checkbox">Message 4</label>
<label class="checkbox"><input value="5" type="checkbox">Message 5</label>
<label class="checkbox"><input value="6" type="checkbox">Message 6</label>
<label class="checkbox"><input value="7" type="checkbox">Message 7</label>
<label class="checkbox"><input value="8" type="checkbox">Message 8</label>

</div> 


 <button class="btn" type="button" id="deleteAcc">Delete</button>

我的 jQuery 代码是:

$("#deleteAcc").on("click",function(){      
    $(".control-group label.checkbox").each(function(){
        if (this.children(":first").is(':checked')) {
            this.remove();
        }
    }); 
});

【问题讨论】:

  • 你可以使用if (this.children[0].checked) this.parentNode.removeChild(this)

标签: javascript jquery checkbox


【解决方案1】:

您不需要each 方法。只需选择选中的输入并删除父项(包含复选框的标签元素):

$("#deleteAcc").on("click", function() {
  $(".checkbox input:checked").parent().remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="control-group">

  <label class="checkbox">
    <input value="0" type="checkbox">Message 0</label>
  <label class="checkbox">
    <input value="1" type="checkbox">Message 1</label>
  <label class="checkbox">
    <input value="2" type="checkbox">Message 2</label>
  <label class="checkbox">
    <input value="3" type="checkbox">Message 3</label>
  <label class="checkbox">
    <input value="4" type="checkbox">Message 4</label>
  <label class="checkbox">
    <input value="5" type="checkbox">Message 5</label>
  <label class="checkbox">
    <input value="6" type="checkbox">Message 6</label>
  <label class="checkbox">
    <input value="7" type="checkbox">Message 7</label>
  <label class="checkbox">
    <input value="8" type="checkbox">Message 8</label>

</div>


<button class="btn" type="button" id="deleteAcc">Delete</button>

【讨论】:

    【解决方案2】:

    实际的问题是$.each 闭包中的this 上下文是对DOM 节点本身的引用。您可以通过将this 包装在$ 中来解决此问题的一种方法:

    $("#deleteAcc").on("click",function(){
        $(".control-group label.checkbox").each(function(){
            if ($(this).children(":first").is(':checked')) {
                $(this).remove();
            }
        }); 
    });
    

    【讨论】:

      【解决方案3】:

      试试这个 http://jsfiddle.net/zp3vwh1j/2/

      $("#deleteAcc").on("click",function(){
          $("input:checkbox").each(function() {
              if ($(this).is(":checked")) {
                  $(this).parent().remove();
              }
          });
      });
      

      【讨论】:

        【解决方案4】:
        $().ready(function () {
            $('body').on('click', '#deletebtn', function () {
        
                $("#example1 tr").each(function () {
                    var rowSelector = $(this);
                    if (rowSelector.find("input[type='checkbox']").prop('checked'))
                    {
                        //THE MARKUP SHOWING THE ID IS NOT AVAILABLE
                        //POST A TABLE ENTRY TO CLEAR UP
                        var id = rowSelector.find('td').first().next().html();
                        var sendObj = {Id : id};
                        //USE JSON OBJECT
                        $.ajax({
                            url : "/page.aspx/deleteRecord",//CHANGE TO YOUR URL
                            dataType: "json",
                            data: sendObj,
                            type: "POST",
                            success: function () {
                                alert("entry deleted");
                            }
                        });
                        rowSelector.remove();
                    }
                });
        
            });
        });
        

        【讨论】:

        • 这个答案将受益于一些解释,而不是只发布代码。例如这种方法与原始海报已经尝试过的方法有何不同。
        猜你喜欢
        • 1970-01-01
        • 2013-08-07
        • 2017-08-19
        • 1970-01-01
        • 2016-07-19
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多