我想检查或取消选中以下代码为我工作的所有复选框
$( '#chkboxall' ).live( 'change', function() {
objs=$(document).find('#chkbox');
objs.each(function(){
$(this).attr( 'checked', $(this).is( ':checked' ) ? '' : 'checked' );
});
});
但是我没有使用$(this).is( ':checked' ) ? '' : 'checked'
而是想获得我检查过的原始复选框的状态,即$('#chkboxall')的状态。我怎么能在每个内部做到这一点?
Krishnik
答案 0 :(得分:3)
你可以在没有.each()
的情况下缩短它(因为.attr()
可以在集合中的每个元素上运行):
$('#chkboxall').live('change', function() {
$(document).find('#chkbox').attr('checked', this.checked);
});
但这无效,您的重复chkbox
id
属性无效。给这些元素一个类,比如:
<input name="blah" class="chkbox" type="checkbox" />
然后在代码中使用.class
selector:
$('#chkboxall').live('change', function() {
$('.chkbox').attr('checked', this.checked);
});
对于在不同情况下发现此情况的其他人,要在.each()
内获取对“外this
”的引用,只需设置一个变量,如下所示:
$('#chkboxall').live('change', function() {
var thing = this;
$('.chkbox').each(function(){
//thing = the outer this, the #chkboxall element
});
});