我有一个包含输入元素的克隆div,所有输入元素都被禁用。我正在尝试使用以下JQuery代码来删除每个div的子节点的disabled属性。
clonedElement.children().removeAttr('disabled');
我没有大量的JQuery经验,所以我可能误解了它的工作方式。我该如何从克隆节点的所有子节点中删除“disabled”属性?
如果有帮助,clonedElement是使用JQuery .clone()方法创建的。
我正在测试的HTML ---
<div id="original_item" class="hidden">
<div class="row_submit">
<div class="med_field">
<p>Product:</p>
<select name="product[]">
<option></option>
</select>
</div>
<div class="small_field">
<p>Type:</p>
<select name="type[]">
<option></option>
</select>
</div>
<div class="small_field">
<p>Price:</p>
<input type="text" name="price[]" value="test" disabled="disabled" />
</div>
<div class="small_field">
<p>Quantity:</p>
<input type="text" name="quantity[]" />
</div>
<img onclick="removeItem(this);" title="Remove Item" style="margin: 18px 0 0 12px;" src="icons/cancel.gif" />
</div>
<input type="hidden" name="warehouse_data[]" />
</div>
答案 0 :(得分:8)
children
仅查看直接子项,如果clonedElement不是med_field / small-field之一,则无效。
您可以使用find()
来搜索直接孩子以外的元素。
即
//for jQuery < 1.6
$("*", clonedElement).removeAttr("disabled");
//or
clonedElement.find("*").removeAttr("disabled");
//for jQuery >= 1.6
$("*", clonedElement).removeProp("disabled");
//or
clonedElement.find("*").removeProp("disabled");
答案 1 :(得分:0)
jQuery&lt; 1.6您当前的代码应该有效。
jQuery 1.6+执行此操作:clonedElement.children().removeProp('disabled');
有关
的原因,请参阅此问题.prop() vs .attr()答案 2 :(得分:0)
只要clonedElement是一个jquery元素,你可以这样做:
clonedElement.children().each(function() {
$(this).removeAttr('disabled');
});