重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

jquery全选反选,jquery实现全选和取消全选

jquery checkbox 全选反选代码只能执行一遍,第二次就失败

removeAttr参数只需要一个,removeAttr("checked")

创新互联公司是一家集网站建设,中方企业网站建设,中方品牌网站建设,网站定制,中方网站建设报价,网络营销,网络优化,中方网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

不过建议替换成

$(".chooseall").click(function(){

if($(".chooseall").prop("checked") == true){

$("input[name='checkbox1']").prop("checked", false);

console.log(1);

}else{

$("input[name='checkbox1']").prop("checked", false);

console.log(2);

}

});

或者更简洁的,

$(".chooseall").click(function(){

var isChecked = $(this).prop("checked");

$("input[name='checkbox1']").prop("checked", isChecked);

});

jquery 全选反选

// 改用prop

$("类名").prop("checked","checked");//全选

$("类名").removeAttr("checked");//取消全选

我的jquery复选框 全选/全不选/反选 功能为什么不正常啊

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

$(':checkbox').each(function(i, el){//最好这样。setAttribute有时候会有问题。

el.checked = true;

});

});

$('#checkNo').click(function(){

$(':checkbox').each(function(i, el){

el.checked = false;

});

});

$('#checkReverse').click(function(){

$(':checkbox').each(function(){

var flag=this.checked;

$(this).attr('checked',function(index,value){

return !value;

});

});

});

如果你直接

$(':checkbox').attr('checked',true);

你会发现,其实你复选框上已经显示checked="checked"了。按道理是应该处于选中状态的。

但实际上。你再调用

$(':checkbox')[0].checked;//会返回false

很奇怪吧。虽然从attr属性上看,确实是checked的。但是dom元素的直接属性上,却返回false。

jquery的attr调用的是DOM的setAttribute方法。也就是说,

$el.setAttribute('checked', true);和$el.checked = true;是有可能在浏览器上处理不一致的。

最常规的方式总之最正确的。如果遇到兼容性的问题。就尽量采用DHTML中最通用的方式。

JQuery实现列表中复选框全选反选功能封装(推荐)

我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如:

我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的id,class,现在想想我都不好意思叫他封装了),然后想到之前老大有写过这个功能去看下他怎么写的,真是没有对比就没有伤害啊,这才叫封装;

$(':checkbox[data-check-target]').click(function

()

{

var

target

=

$(this).attr('data-check-target');

if

($(this).prop('checked'))

{

$(target).prop('checked',

true);

}

else

{

$(target).prop('checked',

false);

}

});

首先这儿的高封装性就体现出来了,只有一个自定义的data-check-target属性用于js和html分离后的连接桥梁(而我当时用两个:一个全选复选框,一个子复选框,有关的点都用上了,这样就没起到封装的效果,js和html耦合性太大)(我看到上面的js就在想怎么通过一个连接点把三个相关联的东西联系起来的呢);

接下来我们继续看具体使用的地方:

我发现全选复选框用于和js链接的桥梁的自定义属性data-check-target有点特别:

input

type="checkbox"

data-check-target=".id-checkbox"

/

它的值为“.id-checkbox”,看起来就感觉好奇怪,继续往下看子复选框实现:

input

type="checkbox"

name="ids[]"

value="@item.Id"

class="id-checkbox"

/

到这儿才豁然开朗原来子复选框的class名称就存放在自定义属性data-check-target中;

var

target

=

$(this).attr('data-check-target');

然后再通过自定义属性data-check-target拿到子复选框的class,从而达到高封装性;

我总结的就是js和html通过了自定义属性data-check-target通信,子复选框依赖全选复选框自定义属性data-check-target的值;

这个例子看下来代码不难,也没有什么地方很难理解的,就是通过一个自定义属性巧妙的完成了低耦合的封装,这也是正是这段代码的难点和精髓;

我真心抑制不住内心的崇拜,这几行代码太漂亮了。

PS:上面js为什么用prop而不用attr,因为:如果当前input中初始化未定义checked属性,则该元素没有指定的checked属性,所以.attr()会返回undefined;

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

以上所述是小编给大家介绍的JQuery实现列表中复选框全选反选功能封装(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!


网站栏目:jquery全选反选,jquery实现全选和取消全选
分享链接:http://cqcxhl.com/article/dsgssdh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP