关于jquery全选和取消全选的问题

木叶源 发布于 2013/05/01 23:14
阅读 829
收藏 0

今天使用了Simple Admin作为网站后台的模板,在使用过程中遇到了一个问题,就是checkbox全选的问题,描述如下

            <{foreach $abs as $v}>
              <tr>
                <td><input type="checkbox" /></td>
                <td><{$v.id}></td>
                <td><a href="#" title="title"><{$v.name}></a></td>
                <td><{$v.url}></td>
                <td><{$v.good}></td>
              </tr>
            <{/foreach}>
以上是HTML代码

$('.check-all').click(
			function(){
				$(this).parent().parent().parent().parent().find("input[type='checkbox']").attr('checked', $(this).is(':checked'));
			}
		);
以上是Jquery代码

问题来了,我点击全选按钮的时候,所有的checkbox就全选了,再点击就取消全选,但是再点击全选checkbox的时候就不能全选了,使用开发者工具发现checked是加在了<input/>中,但是就是不显示,求高人解答

补充,使用Smarty模板

加载中
0
leo108
leo108
jq的版本是什么?1.9的话看这里 http://www.oschina.net/question/42741_108135
0
Deng小尧
Deng小尧
$("#chooseAll").click(function(){
		$('input[name="clientBox"]').prop("checked",this.checked); 
});
$("input[name='clientBox']").click(function() {
    var $subs = $("input[name='clientBox']");
    $("#chooseAll").prop("checked" , $subs.length == $subs.filter(":checked").length ? true :false);
 });
0
梅开源
梅开源
既然会jqury,可移除checked属性
0
hln35
hln35
attr('checked', $(this).is(':checked'))

上面的代码是不是逻辑上有点问题, $(this).is(':checked') 返回的是true/false  如果checked就是true,没有checked就false

如果有一个checkbox,它已经checked,那么$(this).is(':checked') 返回true,然后attr又将'checked'设置为 true,不懂这个什么意思

如果是没有checked,那么$(this).is(':checked')返回false,然后同样的attr又将'checked'设置为false

0
就是个精虫上脑的地方
就是个精虫上脑的地方
我觉得把checkbox设置一个class比较好,看着那一串parent 好头疼,将来html结构变动都不好改,选中 -> attr("checked",true)  取消选中-> removeAttr("checked") 我一般是这么来
0
黑夜有明灯
黑夜有明灯

恩 ,如果有多个 checkbox 的话,把checkbox的name设置成数组,如id[] ,然后全选或者取消 这样写:

$("#checkAll").click(function(){

    

    $("input[name^='id']").attr("checked",$("#checkAll").attr("checked")=="checked"?true:false);


});



返回顶部
顶部