我正在使用jQuery選擇器來隱藏和取消隱藏一些動態生成的HTML單元格。但是,似乎我沒有選擇正確的選擇器。所以,如果你能給我一些建議,我很感激。jQuery選擇器無法正常工作
該網頁:
- 首先詢問用戶選擇的基礎上用戶選擇的應用程序
- 數,生成兩個輸入字段「應用程序的定時」,和「申請日期」的每個應用程序。
- 「應用程序計時」中有兩個選項。如果用戶選擇「默認」,則「申請日期」將消失。
問題: 當有三個以上的應用程序,只有最後的「申請日期」將消失,不管在那裏做出選擇。我認爲這是因爲我沒有使用正確的選擇器。
HTML代碼
<table class="table">
<tr>
<th>
<label for="id_NOA">Number of applications:</label>
</th>
<td>
<select id="id_NOA" class="valid" name="NOA">
<option selected="selected" value="">Choose</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</td>
</tr>
</table>
的JavaScript
$(document).ready(function() {
$('#id_NOA').change(function() {
var total = $(this).val();
$('.app_timing').remove();
$('.app_dates').remove();
for (var i = 1; i <= total; i++) {
$('<tr class="app_timing"><th><label for="id_Apt' + i + '">Application timing ' + i + ':</label></th><td><select name="Apt' + i + '" id="id_Apt' + i + '"><option value="" selected="selected">Select an application timing</option><option value="1">Default</option><option value="2">Enter your own</option></select></td></tr>').appendTo('.table')
$('<tr class="app_dates"><th><label for="id_Date_apt">Application Date ' + i + ':</label></th><td><input readonly="readonly" type="text" name="Date_apt' + i + '" value="MM/DD" id="id_Date_apt' + i + '"/><td></tr>').appendTo('.table')
$('.app_timing:last').find('select').bind('change', function() {
if ($(this).val() == '1') {
$('.app_dates:last').hide()
//$('#id_Date_apt' + i).hide() //I tried to use ID selector, but it does not work
}
})
}
})
})
您正在特別選擇最後一個app_date。使用'$('。app_dates')'而不是'$('。app_dates:last')'來選擇它們全部。 –
作爲@NickG。說,雖然你在for循環中綁定了多個相同函數的事件,但認爲最好在循環外部使用它。 – dbf
@Boltclock:問題是垃圾 - 「jQuery選擇器無法正常工作」,這確實沒有問題。有些東西要求提出建議並指出問題。 '是的確如此.'對於標題/問題 – vol7ron