偶然间需要用到checkbox的一些功能,但是却又遇到了一些小问题,起初的代码是这样的,看着确实OK,毫无压力,只是做简单的全选与全不选的操作,当然,没有反选。问题就在这里,第一次,第二次都能用,到底三次就实在是不行了。
$("input[name='check_all']").click(function () {
if (this.checked) {
$("input[name='gallery_id_checked[]']").attr("checked", "true");
} else {
$("input[name='gallery_id_checked[]']").removeAttr("checked");
}
});
if (this.checked) {
$("input[name='gallery_id_checked[]']").attr("checked", "true");
} else {
$("input[name='gallery_id_checked[]']").removeAttr("checked");
}
});
遇到这样的问题第一时间使用F12各种断点调试,没有问题,然后查看Elements树,神奇的是checked=“checked”确实已经生成了,但是网页中就是没有内容。接下来开始查看jQuery的版本,没问题,接着看手册。顺便网上一搜问题来了。
查到这样一个方法。
prop(name|properties|key,value|fn);解释是这样的:获取在匹配的元素集中的第一个元素的属性值。随着一些内置属性的DOM元素或window对象,如果试图将删除该属性,浏览器可能会产生错误。jQuery第一次分配undefined值的属性,而忽略了浏览器生成的任何错误
所以将上面的代码改成这样就行了。
$("input[name='check_all']").click(function () {
if (this.checked) {
$("input[name='gallery_id_checked[]']").attr("checked", "true");
$("input[name='gallery_id_checked[]']").prop("checked", true);
} else {
$("input[name='gallery_id_checked[]']").removeAttr("checked");
$("input[name='gallery_id_checked[]']").prop("checked", false);
}
});
if (this.checked) {
$("input[name='gallery_id_checked[]']").attr("checked", "true");
$("input[name='gallery_id_checked[]']").prop("checked", true);
} else {
$("input[name='gallery_id_checked[]']").removeAttr("checked");
$("input[name='gallery_id_checked[]']").prop("checked", false);
}
});
过来学习下了!
welcome
嘻嘻
jquery 的应用真的很广泛。
毕竟jquery不是什么新东西了,都非常稳定了,应用广泛可能性挺大的
过来看看~代码是几百年不弄的事了~
好吧。理解,不弄是好事
我不搞代码
好事,不碰代码
X,这两个英文一个都不懂