如何使用jquery 1.8获取输入的表单父级?

时间:2017-02-23 09:08:35

标签: jquery

这是这个问题的重复:

......但时间继续。我认为接受的答案不再有效。

如果复选框已更改,我想提交复选框的表单。

$(document).on("change", "#my_checkbox_input", function() {
    $(this).???
});

使用jquery版本> = 1.8时,???应该是什么样的?

4 个答案:

答案 0 :(得分:3)

您可以使用closest()查找父form元素,然后在其上调用submit()

$(document).on("change", "#my_checkbox_input", function() {
    $(this).closest('form').submit();
});

另请注意,自{jQuery 1.3}以来closest()已经可用,所以版本在这种情况下几乎没有什么区别。

答案 1 :(得分:1)

您可以使用在事件上下文中引用的this关键字到当前更改元素的对象,然后使用this.form获取当前元素包装的父表单,然后调用submit()方法如果您想提交它,请执行以下操作:

$(document).on("change", "#my_checkbox_input", function() {
    this.form.submit();
});

或者首先将表单转换为jQuery对象:

$(document).on("change", "#my_checkbox_input", function() {
    $(this.form).submit();
});

你总是可以使用jQuery方法.parents().closest()来获取父元素,在这种情况下使用引用当前元素的jQuery对象$(this)然后指定父元素节点名称(form),如:

$(document).on("change", "#my_checkbox_input", function() {
    $(this).parents('form').submit();
});

注意: .closest()在速度方面比.parents()效率更高。

希望这有帮助。

答案 2 :(得分:0)

尝试:

$(this).parent()

或者:

$(this).parent().find('#parent_id')

答案 3 :(得分:0)

以下代码适用于这种情况,但请注意其他人已使用上述相同语法回答。

$(document).on("change", "#my_checkbox_input", function() {
    var form = $(this).closest('form');
    // do whatever you want with the form as `form` 
});

.closest()方法搜索DOM树中的元素及其祖先,并返回与传递的查询匹配的最接近的元素及其祖先。在这种情况下,我们正在寻找一个表单,因此它将返回您正在寻找的表单。