为什么复选框检查的ID在这种情况下变空

时间:2015-04-17 11:40:58

标签: jquery

当我选择状态为已批准并单击复选框并单击删除按钮时, 我的身份证明是空的

你能不能让他们知道如何解决这个问题

Jsfiddle

我的代码:

 $(document).on('click', '#deletebtn', function(event) {
     var $checked = $('#tablecontent').find(":checkbox:checked");
   if (confirm("Are you Sure to Delete") == true) {
     var ids = [];
     $.each($checked, function(i, e) {
       var status = $(e).parent().parent().find('.label-status').text();
       var filterstatus = $('#filterstatus').val();
       if (!filterstatus) {
         ids.push($(e).attr("id"));
       } else {
         if ($(e).attr("id") != 'selectall' && status == $('#filterstatus').val()) {
           ids.push($(e).attr("id"))
         }
       }
     });

        alert(ids);
   }       

 });    

3 个答案:

答案 0 :(得分:3)

问题:当您尝试使用jQuery的Parent方法获取行/记录的状态时,实际上它并没有获得正确的元素,您可以在其中找到状态。< / p>

解决方案:更改以下代码行

var status = $(e).parent().parent().find('.label-status').text();

var status = $(e).closest('.AddreqTableCols').find('.label-status').text();

答案 1 :(得分:1)

我想这就是你要做的事,如果不清楚发生了什么,请随意问。

$("#selectall").click(function (e) {
    var $this = $(this);
    $("#tablecontent [type='checkbox']").prop("checked", $this.is(":checked"));
});

$("#deletebtn").click(function (e) {
    if (!confirm("Are you sure you want to delete?")) return;

    var $checked = $("#tablecontent [type='checkbox']:checked");
    var ids = $.map($checked, function (chk) {
        return $(chk).attr("id");
    });
    console.log(ids);
    alert(ids.join(","));
});

http://jsfiddle.net/cdkLkcdk/48/

<强> COMMENT 如果我被分配编写相同的内容,我会在复选框本身上将状态设置为data-status,以使事情变得更容易。

答案 2 :(得分:0)

问题是status始终为空。当您选择filterstatus时,它会进入新的if检查,status == $('#filterstatus').val()将始终为false,因为status为空。

将您的代码更改为:

var status = $(e).parent().parent().parent().find('.label-status').text();

您忘记了额外的.parent()

  

注意:您始终可以使用console.log()来测试您的变量是否填写正确。