2012-07-04 30 views
0

我有以下代碼工作,我想知道這是否可以簡化更多。依賴複選框,你認爲這可以更簡化嗎?

演示:http://jsfiddle.net/TnpNV/8/

<form name="cbform"> 
<input type="checkbox" value="1" name="one" id="one" /> one<br /> 
<input type="checkbox" value="1" name="two" id="two" /> two 
</form>​ 

<script> 
$('#one, #two').click(function(event) { 
    var checked = $(this).is(':checked'); 
    if (checked) { 
     $('#one').attr('checked', true); 
     $('#two').attr('checked', true); 
    } 
    else { 
     $('#one').attr('checked', false); 
     $('#two').attr('checked', false); 
    } 
}); 
</script> 

它基本上是兩個複選框是互相依賴的。 Jquery被用來檢查和取消選中它們。

問候

回答

4

緊湊最有效的演示http://jsfiddle.net/U5GfF/http://jsfiddle.net/U5GfF/3/

這是最行版本,你可以爲你的代碼:即

this.checked將返回truefalse,然後點擊事件prop將相應地設置checked屬性。 :)

希望這有助於

代碼

$("#one, #two").click(function() { 
    $("input").prop('checked', this.checked); 
}); 

$("#one, #two").click(function() { 
    $("#one, #two").prop('checked', this.checked); 
}); 

$("#one, #two").on('click', function() { 
    $("#one, #two").prop('checked', this.checked); 
}); 
+0

如果您有超過2個輸入會發生什麼?不僅要檢查,如輸入文本,按鈕等... –

+1

+1智能答案兄弟:) – undefined

+0

@OscarJara很酷,給我一個情況會讓你演示**看到這裏**:在可能複選框。 ** DEMO ** http://jsfiddle.net/pJ7jY/':)' –

2

您可以使用prop()方法:

$('#one, #two').click(function(event) { // or $("input:checkbox") 
    if ($(this).is(':checked')) { 
     $('#one, #two').prop('checked', true); // or $("input:checkbox") 
    } else { 
     $('#one, #two').prop('checked', false); 
    } 
}); 

Demo

+1

** prop ** yeah男士,同意 –

+0

根據奧斯卡的回答,如果您需要支持舊版本,您可以將'prop'替換爲'attr'。 –

+0

喲檢查我的帖子下面的更小的版本! :P –

1

試試這個,只是兩行:-)

現場演示:

http://jsfiddle.net/TnpNV/15/

jQuery的現代版本:

$('#one, #two').on('click', function(e) { 
    var prop = ($(this).is(':checked')) ? true : false; 
    $('#one, #two').prop('checked', prop); 
});​ 

jQuery的舊版本還(因爲我在你的jsfiddle你正在使用jQuery 1.4.4版本看到的),這個代碼將工作在所有版本中。

$('#one, #two').click(function(e) { 
    var prop = ($(this).is(':checked')) ? true : false; 
    $('#one, #two').attr('checked', prop); 
}); 

+0

我不是三元運營商的忠實粉絲;代碼行數較少,但我個人覺得這不會使其「簡化」。然而,這是一個很好的緊湊解決方案,可以識別prop和attr,所以無論如何它都會得到我的讚賞! –

+0

@GregPettit我認爲這是簡化OP的最好方法,謝謝您的讚賞:-) –