我在gridview上有一个过滤器文本框的脚本,每行都有一个复选框的脚本。 当我在网格中过滤一些东西时,我会得到一些过滤的行..我想使用selectall脚本选择那些过滤的行。但它正在选择网格中的所有结果。
选择复选框脚本:
$("#<%=gvCheckDetails.ClientID%> input:checkbox").live("click", function(event) {
var tbl = $("#<%=gvCheckDetails.ClientID%>");
var checkbox = $(this);
var checkState = checkbox.is(":checked");
var ancestorName = checkbox.parent().parent()[0].nodeName; // tr or th?
// if it's a header, we'll work with all rows (select on or off)
if (ancestorName.toLowerCase() === "th") {
$(tbl[0].config.rowsCopy).each(function() {
if (checkState)
$(this).find("input:checkbox").attr('checked', true);
else
$(this).find("input:checkbox").removeAttr('checked');
});
}
});
任何人都可以帮助我如何在修改selectall时修改上面的脚本以仅选择过滤的值(搜索文本框是使用aspx中的jscript动态过滤网格行)
答案 0 :(得分:0)
:visible
选择器通常可以解决问题。它将仅过滤可见的元素,包括DOM中的父元素。
$(tbl[0].config.rowsCopy).filter(':visible').each(function() {
答案 1 :(得分:0)
根据Augusto Men解决:
刚刚更换
$(this).find("input:checkbox").attr('checked', true);
与
$(this).filter(':visible').find("input:checkbox").attr('checked', true);
所以现在复选框检查是过滤并仅应用可见的。
非常感谢 Augusto