从jQuery中的复选框获取所有者表单

时间:2011-03-23 13:36:47

标签: javascript jquery html

jQuery中有一种简单的方法可以返回深层嵌套复选框(或输入)元素的所有者表单吗?这是我的意思的一个例子:

<form>
    <table>
        <thead>
            <tr>
                <td>123</td>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <td><input type="checkbox" class="checkall" /></td>
            </tr>
        </tfoot>
    </table>
</form>

然后我有以下jQuery代码:

$('checkbox.checkall').each(function() { 
    // Access form element of the checkbox here
});

在上面的示例中,我想获取复选框所属的表单。从本质上讲,我可以使用链式parent()方法执行此操作,但复选框可能并不总是与根表单元素的嵌套深度相同。

很抱歉,如果不清楚,但很难解释。

5 个答案:

答案 0 :(得分:5)

获取closest表单

$("input[type=checkbox]").closest("form");

来自jQuery API:

  

描述:获取与选择器匹配的第一个祖先元素,从当前元素开始并逐步向上遍历DOM树。

     

.closest(选择器)

     

selector:包含选择器的字符串   表达式匹配元素。

答案 1 :(得分:2)

表单字段具有form属性,该属性返回包含它们的FORM元素。

$('checkbox.checkall').each(function() { 
    // Access form element of the checkbox here
    var form = this.form;
});

来源:http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-63239895

现场演示: http://jsfiddle.net/simevidas/9FPrX/1/

答案 2 :(得分:1)

你也可以使用parents():

$("input:checkbox").parents("form");

答案 3 :(得分:0)

.closest()听起来像你需要的功能。

它将返回您为函数提供的元素的最近父元素。

答案 4 :(得分:0)

使用parent()

$("input:checkbox").parent("form");

家长会向您提供此复选框的所有相关父母(表格)