你可以這樣做:
$("#check1, #check2, #check3").click(function() {
var textId = "#" + this.id.replace("check", "text");
$(textId).attr('disabled',! this.checked)
});
或者
$(":checkbox[id^=check]").click(function() {
var textId = "#" + this.id.replace("check", "text");
$(textId).attr('disabled',! this.checked)
});
...只要你沒有其ID開始「檢查」,你不希望包含任何複選框在選擇器中。
基本上,任何標識問題複選框的選擇器都可以工作,然後它只是一個操縱ID的問題。
更新:這可能是因爲你可以不設標識完全,這取決於你的HTML結構。例如,鑑於這種形式:
<form id='foo'>
<label><input type='checkbox'>Field 1</label>
<br><input type='text' size='40' disabled>
<br><label><input type='checkbox'>Field 2</label>
<br><input type='text' size='40' disabled>
<br><label><input type='checkbox'>Field 3</label>
<br><input type='text' size='40' disabled>
<br><label><input type='checkbox'>Field 4</label>
<br><input type='text' size='40' disabled>
</form>
...我們能達到這樣的預期的效果:
$("#foo input[type=checkbox]").click(function() {
var next = $(this).parent().nextAll('input[type=text]:first');
next.attr("disabled", !this.checked);
});
Live example
你可以在$('[id^= check]')中替換第一行。click(function(){ – 2011-02-08 09:20:32