我在Div中命名爲item
的內部存在以下html標記,我想選擇所有元素(在嵌套div內)並清除值。如下面給出的Jquery所示,我設法使用.children().each()
來訪問每個Div中的元素。但問題是.children().each()
從父div一次下降一級,所以我已經重複相同的代碼塊與多個.children()
來訪問嵌套Div內的元素,任何人都可以建議我一種方法來做到這一點,而無需重複代碼爲N個嵌套div。使用JQuery在嵌套Div中選擇元素
HTML標記
<div class="item">
<input type="hidden" value="1234" name="testVal">
<div class="form-group" id="c1">
<div class="controls ">
<input type="text" value="Results" name="s1" maxlength="255" id="id2">
</div>
</div>
<div class="form-group" id="id4">
<input type="text" value="Results" name="s12" maxlength="255" id="id225">
<div class="form-group" id="id41">
<input type="text" value="Results" name="s12" maxlength="255" id="5">
<div class="form-group" id="id42">
<input type="text" value="Results" name="s12" maxlength="255" id="5">
<div class="form-group" id="id43">
<input type="text" value="Results" name="s12" maxlength="255" id="id224">
</div>
</div>
</div>
</div>
</div>
我Qjuery腳本
var row = $(".item:first").clone(false).get(0);
$(row).children().each(function() {
updateElementIndex(this, prefix, formCount);
if ($(this).attr('type') == 'text') {
$(this).val('');
}
if ($(this).attr('type') == 'hidden' && ($(this).attr('name') != 'csrfmiddlewaretoken')) {
$(this).val('');
}
if ($(this).attr('type') == 'file') {
$(this).val('');
}
if ($(this).attr('type') == 'checkbox') {
$(this).attr('checked', false);
}
$(this).remove('a');
});
// Relabel or rename all the relevant bits
$(row).children().children().each(function() {
updateElementIndex(this, prefix, formCount)
if ($(this).attr('type') == 'text') {
$(this).val('');
}
if ($(this).attr('type') == 'hidden' && ($(this).attr('name') != 'csrfmiddlewaretoken')) {
$(this).val('');
}
if ($(this).attr('type') == 'file') {
$(this).val('');
}
if ($(this).attr('type') == 'checkbox') {
$(this).attr('checked', false);
}
$(this).remove('a');
});
喜@SoftwareNerd感謝您的解決方案。你已經使用了一個名爲'recursive'的函數,但是你沒有調用這個函數,並且你在給定代碼的第5行使用了'if(element.children()。length> 0)',我想知道它來自哪裏。它很好,如果你可以給我一個解釋 – PIKP
@PIKP更新我的答案.. – SoftwareNerd