<script type="text/javascript" src="\..\JQueryLib\jquery-1.7.1.js"></script>
<script type="text/javascript" >    $(function() {
        $("#checkboxA").click(function() {
            /*根据全选框的选中与否,来修改记录的选取*/
            if ($(this).is(':checked')) {
                $(":checkbox").each(function() {
                    if (!$(this).is(':checked')) {
                        $(this).attr('checked', true);
                        // $(this<'tr').cssClass('select');
                    }
                });
            }
            else {
                $(":checkbox").each(function() {
                    if ($(this).is(':checked')) {
                        $(this).attr('checked', false);
                        // $(this<'tr').cssClass('select');
                    }
                });
            }
        });
        //删除选中项按钮事件
        $("#delete").click(function() {
            $("tr").each(function() {
                if ($(this).find(":checkbox").is(":checked")) {
                    var listid = $(this).find("[display='none']").val();
                    alert(listid);
                }
            });
        });
    });
</script>
...<asp:DataList ID="DataList1" runat="server" Visible="False"
         Width="100%" >
    <HeaderTemplate>
    <table>
    <tr>
    <th>节目单名称</th>
    <th>播放类型</th>
    <th>下发状态</th>
    <th>编制人员</th>
    <th>指定播放组</th>
    <th>播放时间</th>
    <th>编辑</th>
    <th>操作</th>
    <th><input type="checkbox" id="checkboxA" value="全选"/></th></tr>
    </HeaderTemplate>   
    <ItemTemplate>
    <tr>
    <td><%#Eval("List_Name") %></td>
    <td><%#Eval("Play_Type") %></td>
    <td><%#Eval("Cmd_Type") %></td>
    <td><%#Eval("Editter") %></td>
    <td><%#Eval("PlayGrps") %></td>
    <td><%#Eval("Startting") %></td>
    <td><a href="" >编辑</a></td>
    <td><a href="">删除</a></td>
    <td><input type="checkbox"/></td>
    <td style="display:none"><%#Eval("List_ID") %></td>
    </tr>
    </ItemTemplate>
    
    <FooterTemplate>
    <tr>
    <td align="right">共有</td>
    <td><asp:Label ID="counts" runat="server" style="color:red"></asp:Label>
         条记录,<asp:Label ID="pages" runat="server" style="color:red"></asp:Label>
         页
    </td>
    </tr>
    
    <tr class="page">
    <td align="right"><a href="">首页</a></td>
    <td><a href="" >上一页</a>
    <a href="" >下一页</a>
    <a href="">尾页</a></td> 
    <td></td> 
    <td>跳转至:<input id="goto" style="width:20px;height:20px;border:none"/>页<a href="">GO</a></td>
    </tr>
    <tr></tr>
    <tr></tr>
    <tr><td></td><td align="right"><input type="button" id="delete" value="删除选中项" /></td></tr>
    </table>
    </FooterTemplate>
    
    </asp:DataList>
/*DataList已经由后台绑定了数据源,*/
我随便选择一个checkbox,然后点击删除按钮 ,
弹出来的是unfind     ,而且是弹出2次(我只选了一个checkbox)
求高手解惑。
1、获取那个隐藏td的List_ID 值,
2、为什么弹出的是两次对话、明明只选了一个checkbox
3、jquery的选择器中   “所有tr对象,除了某个tr对象” 的选择器怎么写

解决方案 »

  1.   

    你点的全选把$("tr").each(function() {
    if ($(this).find(":checkbox").is(":checked")) {
    var listid = $(this).find("[display='none']").val();
    alert(listid);
    }
    });你这段代码是所有tr下的被选中的input都会alert
      

  2.   

    我就是要达到这个效果。我如果点了全选,就全部都会选上,
    但是现在的问题是,我点一个选项,然后选 “删除” 按钮,它会弹两次,而且
    无法获取到list_ID 的值我需要这个值
      

  3.   

    一步一步来说吧:
    第一,关于全选框的事件处理:            /*根据全选框的选中与否,来修改记录的选取*/
                if (this.checked) { // 这里直接用原生的 DOM 方式好了,简单有效
                    $('#tbodyId :checkbox').attr('checked', true); // 最好在包含所有要全选的 checkbox 的父辈元素上加一个 ID,一可以提高性能,二免得选取不相干的 checkbox。即使你这里没有,但这是一个好习惯。表格行的处理,最好的办法就是加个 tbody。
                }
    第二、删除按钮事件:        $("#delete").click(function() {
                var deletedIds = [];
                $("#tbodyId :checked").each(function() { // 这里又用了 tbody,并直接选取已选中的 checkbox,而不是再通过 tr 来选。注意这里用的是 :checked
                  deletedIds.push(this.value); // 为什么使用 value,请看下面的绑定式
                });
                alert(deletedIds.join()); // 这里会弹出所有已选中的 checkbox 相关值
            });
    第三:数据绑定,没必要再单独弄个隐藏域出来,多此一举,还麻烦<input type="checkbox" value="<%#Eval("List_ID") %>" />直接在回复内容中写的代码,没测试,可能会有错误,但思路大体这样,你可以看一下。
      

  4.   

    <script type="text/javascript" >    $(function() {
            $("#checkboxA").click(function() {
                /*根据全选框的选中与否,来修改记录的选取*/
                if ($(this).is(':checked')) {
                    $(":checkbox").each(function() {
                        if (!$(this).is(':checked')) {
                            $(this).attr('checked', true);
                            // $(this<'tr').cssClass('select');
                        }
                    });
                }
                else {
                    $(":checkbox").each(function() {
                        if ($(this).is(':checked')) {
                            $(this).attr('checked', false);
                            // $(this<'tr').cssClass('select');
                        }
                    });
                }
            });
            //删除选中项按钮事件
            $("#delete").click(function() {
                $("tr").each(function() {
                    if ($(this).find(":checkbox").attr("class") == "checkbox") {
                        var listid = $(this).find(":checkbox.checkbox").attr("id");
                        alert(listid);
                    }
                });
            });
        });
    </script><asp:DataList ID="DataList1" runat="server" Visible="False"
             Width="100%" >
        <HeaderTemplate>
        <table>
        <tr>
        <th>节目单名称</th>
        <th>播放类型</th>
        <th>下发状态</th>
        <th>编制人员</th>
        <th>指定播放组</th>
        <th>播放时间</th>
        <th>编辑</th>
        <th>操作</th>
        <th><input type="checkbox" id="checkboxA" value="全选"/></th></tr>
        </HeaderTemplate>   
        <ItemTemplate>
        <tr>
        <td><%#Eval("List_Name") %></td>
        <td><%#Eval("Play_Type") %></td>
        <td><%#Eval("Cmd_Type") %></td>
        <td><%#Eval("Editter") %></td>
        <td><%#Eval("PlayGrps") %></td>
        <td><%#Eval("Startting") %></td>
        <td><a href="" >编辑</a></td>
        <td><a href="">删除</a></td>
        <td><input id="<%#Eval("List_ID") %>" class="checkbox" type="checkbox"/></td>    </tr>
        </ItemTemplate>
        
        <FooterTemplate>
        <tr>
        <td align="right">共有</td>
        <td><asp:Label ID="counts" runat="server" style="color:red"></asp:Label>
             条记录,<asp:Label ID="pages" runat="server" style="color:red"></asp:Label>
             页
        </td>
        </tr>
        
        <tr class="page">
        <td align="right"><a href="">首页</a></td>
        <td><a href="" >上一页</a>
        <a href="" >下一页</a>
        <a href="">尾页</a></td> 
        <td></td> 
        <td>跳转至:<input id="goto" style="width:20px;height:20px;border:none"/>页<a href="">GO</a></td>
        </tr>
        <tr></tr>
        <tr></tr>
        <tr><td></td><td align="right"><input type="button" id="delete" value="删除选中项" /></td></tr>
        </table>
        </FooterTemplate>
        
        </asp:DataList>
      

  5.   

    如果要加 TBody 的话,你就加到 <th><input type="checkbox" id="checkboxA" value="全选"/></th></tr> 这一行下面与 <FooterTemplate> 下的第一行之间。
    要在所有的 tr 中排除某些 tr,可以用 $('tr:not(notExpr)') 这样的形式,或者 $('tr').not('notExpr') 之类的,notExpr 是要排除元素的选择器表达式
      

  6.   

    多谢两位大哥。。呵呵,我又学习到了,刚才我也自个琢磨了一下,结果搞出来了,但是毕竟是土办法。非常有必要向你们学习。毕竟你们的方法。看这,很清晰。。先献上我的成果,然后再娶试试你们的方法。
         //删除选中项按钮事件
            $("#delete").click(function() {
                $("#DataList1 table tr").each(function() {  /*这里,原来datalist本身就是一个table ,所以要在选取他里面的table 这样,就不会弹出两次对话了。*/
                    if ($(this).find(":checkbox").is(":checked")) {
                        var listid = $(this).find("td:eq(9)").text();//表格的内容用.text()获取
                        if (listid != "" && listid != null) {
                        
                        }
                    }
                });
            });
      

  7.   

    试了一下。大哥,你的方法,太优雅了,
    if( this.checked)   //我就想不到,还有这这样的,呵呵,  js基础差哈。。还有,你说的,规范。。恩,我慢慢适应下,呼呼,成败在细节啊 。。!散分了 !
      

  8.   

    假如如下所示:
    □父:□子1 □子2 □子3 □子4;先判断,if($(":checkbox:checked").length<1)
                {
                    alert("至少选择一个");
                    return false;
                }
    处理:
    function CheckChange(obj)
        {
            var _checked = $(obj).attr("checked")?true:false;
            $(obj).parents('td').next().find('input').attr('checked',_checked);
        }function aaa(obj)
        {
            var _checked = true;
            $(obj).parent().parent().find('input:checked').length==$(obj).parent().parent().find('input').length?true:false;
            
            $(obj).parents('td').prev().find('input').attr('checked',_checked);
        }