我有一张复选框。当我单击带有“全选”文本的div时,它应该选择所有chekbox并且div的文本需要更改为“Unselect all”而不管是否选中任何复选框,反之亦然。反之亦然。
我写了以下内容,它工作正常,有没有更好的方法呢?
if($(this).text() == "Select All") {
$(this).text("Unselect All");
$.each($(".classname"),function(i ,ll){
$(this).attr('checked', true);
});
}else{
$(this).text("Select All");
$.each($(".classname"),function(i ,ll){
$(this).attr('checked', false);
});
}
感谢。
答案 0 :(得分:4)
我假设classname
是一个相关复选框的类。你可以尝试:
if($(this).text().trim() == "Select All") {
$(this).text("Unselect All");
$(".classname").attr('checked', true);
}else{
$(this).text("Select All");
$(".classname").attr('checked', false);
}
答案 1 :(得分:3)
首先,$()
是一个函数调用,所以如果你要使用var $this = $(this)
,你应该说$(this)
。此外,您的$.each
循环是多余的,因为jQuery对象无论如何都将其更改应用于所有匹配的元素,因此不需要循环(即,基于jQuery方法设置)。您最好删除checked
属性,而不是将其设置为false
。这样的事情可能会更好:
var $this = $(this);
if($this.text() == 'Select All') {
$this.text('Unselect All');
$('.classname').attr('checked', true);
}
else {
$this.text('Select All');
$('.classname').removeAttr('checked');
}