我有一個動態表單,可以添加新行,刪除行。以下是代碼:基於Javascript中的anoter單擊元素向下查找最接近的元素
// HTML
<div class="row">
<div class="col-xs-4">
<ul>
<li><input type="checkbox"></li>
<li><input class="landmark" type="checkbox" value="4" name="patient[block_procedure_part2_notes_attributes][0][monitoring_device_ids][]" id="patient_block_procedure_part2_notes_attributes_0_monitoring_device_ids_4" /></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
</div>
<div class="col-xs-8">
<ul>
<li><input type="checkbox"></li>
<li><input class="us_image" type="radio" value="clear" checked="checked" name="patient[block_procedure_part2_notes_attributes][0][us_image]" id="patient_block_procedure_part2_notes_attributes_0_us_image_clear" /></li>
<li><input class="us_image" type="radio" value="clear" checked="checked" name="patient[block_procedure_part2_notes_attributes][0][us_image]" id="patient_block_procedure_part2_notes_attributes_0_us_image_poor" /></li>
<li><input type="checkbox"></li>
</ul>
</div>
</div>
<div class="row">
<div class="col-xs-4">
<ul>
<li><input type="checkbox"></li>
<li><input class="landmark" type="checkbox" value="4" name="patient[block_procedure_part2_notes_attributes][1][monitoring_device_ids][]" id="patient_block_procedure_part2_notes_attributes_1_monitoring_device_ids_4" /></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
</div>
<div class="col-xs-8">
<ul>
<li><input type="checkbox"></li>
<li><input class="us_image" type="radio" value="clear" checked="checked" name="patient[block_procedure_part2_notes_attributes][1][us_image]" id="patient_block_procedure_part2_notes_attributes_1_us_image_clear" /></li>
<li><input class="us_image" type="radio" value="clear" checked="checked" name="patient[block_procedure_part2_notes_attributes][1][us_image]" id="patient_block_procedure_part2_notes_attributes_1_us_image_poor" /></li>
<li><input type="checkbox"></li>
</ul>
</div>
</div>
// Javascript
var landmark = $('input.landmark');
landmark.change(function(event) {
var usImageOptions = $(event.target).closest('input.us_image');
if (landmark.prop('checked')) {
resetInputs(usImageOptions);
controlFormSub();
disableInputs(usImageOptions, true);
} else {
disableInputs(usImageOptions, false);
}
});
您可以看到有2個.row
s。更多的行可以添加一個添加按鈕,或刪除一個刪除按鈕。
這裏我試圖關閉usImageOptions
單選按鈕,對應於選中的最近的.landmark
。如果第一個.row
中的.landmark
被選中,則第一個.row
的.usImageOptions
應被清除並禁用。第二個.row
應該是完好的。
我不願意被其他類找到,因爲如果他們改變了,那麼這段代碼就會中斷。
我試過很多方法來選擇同一行內的.usImageOptions
但不能。我該怎麼辦?
我可以不依賴其他課程嗎?因爲如果標記改變,那麼這個腳本就會中斷。 – Victor
當然。你總是可以根據':checkbox'和':radio'選擇,完全忽略類。只要你知道如何去他們的評論祖先節點,你會沒事的。在上面的例子中,甚至可以使用.parent()。parent()。parent()。parent()'從'LI'導航到'UL'到'DIV'到'DIV'。 – ajm
因爲每個部分都有.row,所以當我找到它時,它包含所有4個.usImageOptions。但是我只想要在同一個.row內的最近的2個。 – Victor