递归删除所有子元素中的属性

4

I have this html:

<tr id="Estuches_1">
    <td>
        <div class="group">
            <input name="VariableDataList[0].VariableDataForLevel[0].ProductionOrderId" id="VariableDataList_0__VariableDataForLevel_0__ProductionOrderId" >
            <input name="VariableDataList[0].VariableDataForLevel[0].AggregationLevelConfigurationId" id="VariableDataList_0__VariableDataForLevel_0__AggregationLevelConfigurationId">
            <select name="VariableDataList[0].VariableDataForLevel[0].VariableDataId" disabled="disabled" id="VariableDataList_0__VariableDataForLevel_0__VariableDataId">
                <option value="00">Serial Shipping Container Code(SSCC-18)</option>
                <option value="01" selected="">Global Trade Item Number</option>
                <option value="10">Batch or lot number</option>
                <option value="11">Production date(YYMMDD)</option>
                <option value="17">Expiration date(YYMMDD)</option>
                <option value="21">Serial number</option>
            </select>
        </div>
    </td>
    <td>
        <div class="group">
            <input name="VariableDataList[0].VariableDataForLevel[0].Value" disabled="disabled" id="VariableDataList_0__VariableDataForLevel_0__Value">
            <span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="VariableDataList[0].VariableDataForLevel[0].Value"></span>
        </div>
    </td>
</tr>

在Javascript中,我有一个名为clone的变量,它是使用上述html创建的。
我想删除html中所有元素中的disabled属性(一个在select中,另一个在文本输入框中)。
我尝试了以下方法:
var clone = $($.parseHTML(html));
clone.removeAttribute("disabled");

但是它没有移除任何元素。也许是因为它试图移除tr中的disabled属性。
我该如何在所有元素中移除disabled属性? idname的元素将会改变。
1个回答

7

您需要使用.find()方法针对disabled元素进行定位,然后使用.removeAttr()方法。

clone
    .find('[disabled]') //Target all disabled descendants 
    .removeAttr('disabled') //Remove disabled

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接