我的問題的完整工作JSFiddle here。JQuery如何避免next()方法鏈接
我有一個具有多個子窗體形式:
<div class="container-fluid">
<form>
<ul style="list-style-type: none">
<li class="panel panel-body panel-default">
<div class="form-group">
<label clas="control-label" for="1_sample">Sample</label>
<input type="number" id="1_sample" name="1_sample" class="form-control">
</div>
<div class="progress">
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100% Complete</span>
</div>
</div>
<div class="form-group">
<label clas="control-label" for="1_result">Result</label>
<input type="number" id="1_result" name="1_result" class="form-control">
</div>
<div class="form-group">
<label clas="control-label" for="1_number">Number</label>
<input type="number" id="1_number" name="1_number" class="form-control">
</div>
</li>
<li class="panel panel-body panel-default">
<div class="form-group">
<label clas="control-label" for="2_sample">Sample</label>
<input type="number" id="2_sample" name="2_sample" class="form-control">
</div>
<div class="progress">
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100% Complete</span>
</div>
</div>
<div class="form-group">
<label clas="control-label" for="2_result">Result</label>
<input type="number" id="2_result" name="2_result" class="form-control">
</div>
<div class="form-group">
<label clas="control-label" for="2_number">Number</label>
<input type="number" id="2_number" name="2_number" class="form-control">
</div>
</li>
</ul>
</form>
</div>
的編碼行爲是當sample
輸入的變化,在同一li
變化result
和number
輸入在一起。
我的JQuery目前的樣子:
$(document).ready(function() {
var form = $('form');
form.on('change', 'input[id$="sample"]', function (e) {
var sample_field = e.target;
var result_field = $(sample_field).closest('.form-group').next().next().find("input[id$='result']");
var number_field = $(sample_field).closest('.form-group').next().next().next().find("input[id$='number']");
var sample = $(sample_field).val();
$(result_field).val(sample);
$(number_field).val(sample);
});
});
什麼我不知道是是否有辦法避免next()
鏈接以獲得正確的形式組?在真實的代碼中,鏈條非常長,並且對元素的添加或刪除也不是非常健壯。
find()
本身似乎並沒有探索輸入的.form-group
元素 - 是否有更好的方法來編寫此功能?
更新:
的jsfiddle與代碼更新,以反映接受的答案here。
謝謝 - 在我的特殊情況下,片段是'$(sample_field).closest('。form-group')。parent()。find(「div.form-group> input [id $ ='result']」) ;'。 – Darkstarone