为什么我不能删除所有孩子的属性?

时间:2011-06-07 18:46:48

标签: javascript jquery

我有一个包含输入元素的克隆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>

3 个答案:

答案 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');
});