2013-07-22 17 views
0

的有关检查CheckAll复选框我检查网页上的所有复选框和移动母公司,这是一个表,每这些的将复选框复制到另一个div。而在取消勾选CheckAll复选框,我不得不取消所有的页面上选中的复选框并从DIV复制的表格元素。一个元素指定一个参数值类不能正常工作,甚至上点击次数

/*******************Check and Uncheck all the checkboxes on the page***********************************/ 
$("#dvReports #checkAll").click(function() 
{ 
    var pageNum = $("#dtlRptPrvNxtLnk .selected.link_look").html(); 
    alert(pageNum); 
    if ($("#dvReports #checkAll").is(':checked')) 
    { 
     $("#dvReports input[type=checkbox]").each(function() 
     { 
      $(this).prop("checked", true); 
      // If a listing is selected then move it to divPrintContainer, 
      // which is buried inside _reportLayout.cshtml 
      $(this).closest('table') 
       .toggleClass(pageNum) 
       .clone() 
       .appendTo("#divPrintContainer"); 
     }); 
    } 
    else 
    { 
     $("#dvReports input[type=checkbox]").each(function() 
     { 
      $(this).prop("checked", false); 
     }); 

     $("#divPrintContainer").children('table.'+ pageNum).remove(); 
    } 
}); 

我遇到了以下问题:

  1. 对于每个偶数上CheckAll复选框.toggleClass(pageNum)不工作的点击。 即我第一次检查Checkall.toggleClass(pageNum)分配的类名。现在我取消选中Checkall。我又检查Checkall不会分配页次为类(但我确实看到与页次警报)。

HTML in the fiddle

+0

任何机会,我们可以看到一些,这是运行针对HTML的? – devrooms

+0

使用$(“#dvReports #checkAll”)使我没有使用唯一的ID,这是不允许的思考。 –

+0

@devrooms我在jsfiddle中用HTML更新了问题。 – BumbleBee

回答

1

如果我正确理解你的问题,它出现的问题是这一行:

$(this).closest('table').toggleClass(pageNum).clone().appendTo("#divPrintContainer"); 

我此行的解释如下:向上

  1. 搜索通过DOM树来获得对 表的引用包含复选框
  2. 切换名为pageNum的类即第一次添加它,第二次删除它等
  3. 复制表到一个新的DOM元素
  4. 追加到容器

所以,当你点击全选,就会切换在最近的每个文本框的表类,但从来没有新的元素切换这一关。当您第二次选择它时,它将删除该类,然后将其复制到容器中。

简单,行更改为以下:

$(this).closest('table').clone().addClass(pageNum).appendTo("#divPrintContainer"); 
+0

谢谢你。与您的upadte表复制到#divPrintContainer不会发生。 – BumbleBee

+0

在你的小提琴你的div被称为divTestPrintContainer - 请参阅修正小提琴:http://jsfiddle.net/w7F3r/ – devrooms

+0

谢谢。这样可行。 – BumbleBee

1

要调用内if ($("#dvReports #checkAll").is(':checked')) {

结果toggleClass,检查但不取消选中时toggleClass只调用。为此,请点击1,toggleClass添加该类。点击2,取消选中复选框,不对类进行更改。点击3,复选框被选中,toggleClass仅被第二次调用,删除类。

我相信你想要的是每次被点击时,不仅当检查调用它。将它从if中删除。

+0

点击1,我需要添加类并将表移动到一个div。点击2时,复选框未选中,我需要从div中提取复制的表格。 – BumbleBee

+0

也许你打算在克隆而不是原始的元素上调用'toggleClass'(或'addClass')?在克隆前,您目前在原始元素上调用'toggleClass'。 –

相关问题