如何在jquery中更改所有表单输入的属性?

时间:2013-02-23 01:16:36

标签: javascript jquery forms parent children

我继承了一些形式:

<tr>
    <form method="post" action="\">
        <td><input disabled type="text" name="t1" id="t1" value=""></td>
        <td><input disabled type="email" name="t2" id="t2" value=""></td>
        <td><input disabled type="email" name="t3" id="t3" value=""></td>
        <td><input type="submit" id="edit" value="Edit"></td>
        <td><input type="submit" name="change" value="Change"></td>
    </form>
</tr>
<tr>
    <form method="post" action="\">
        <td><input disabled type="text" name="t1" id="t1" value=""></td>
        <td><input disabled type="email" name="t2" id="t2" value=""></td>
        <td><input disabled type="email" name="t3" id="t3" value=""></td>
        <td><input type="submit" id="edit" value="Edit"></td>
        <td><input type="submit" name="change" value="Change"></td>
    </form>
</tr>
....

当我点击#edit按钮时,我想将链上移到自己的table,选择所有input个孩子并删除disabled属性,但仅限对于那种形式。

我试过这样的事情:

$('#edit').on("click", function(e){
    e.preventDefault();
    var form = $(this).parent("form");
    // or maybe a $.each ??
    form.children('input').removeAttr("disabled");
});

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

$(this).parent()实际上是<td>,所以它什么都不返回。

$(this).closest('form').find('input').prop('disabled', false);

答案 1 :(得分:0)

$('#edit').on("click", function(e){
    e.preventDefault();
    var form = $(this).closest("form");
    // or maybe a $.each ??
    form.find('input').attr("disabled","");
});

改为使用closestfind

parent指的是确切的父级,而closest找到树的第一个匹配。 children是直接的孩子,而不是大孩子。