删除jQuery中选中的复选框

时间:2014-11-04 08:52:50

标签: javascript jquery checkbox

我正在尝试删除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();
        }
    }); 
});

4 个答案:

答案 0 :(得分:7)

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

&#13;
&#13;
$("#deleteAcc").on("click", function() {
  $(".checkbox input:checked").parent().remove();
});
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

performFiltering()