jQuery找到父表单

kmu*_*nky 212 jquery traversal

我有这个HTML

<ul>
    <li><form action="#" name="formName"></li>
    <li><input type="text" name="someName" /></li>
    <li><input type="text" name="someOtherName" /></li>
    <li><input type="submit" name="submitButton" value="send"></li>
    <li></form></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我如何选择其中的表格input[name="submitButton"]?(当我点击提交按钮时,我想选择表单并在其中添加一些字段)

kar*_*m79 475

我建议使用closest,它选择最接近的匹配父元素:

$('input[name="submitButton"]').closest("form");
Run Code Online (Sandbox Code Playgroud)

我会这样做,而不是按名称过滤:

$('input[type=submit]').closest("form");
Run Code Online (Sandbox Code Playgroud)

  • 可能是我们应该按索引添加?'$( "输入[类型=提交]")最接近的( "形式");'.返回一个表单数组. (2认同)
  • peterjwest答案比这个更好. (2认同)

pet*_*est 53

您可以使用所有输入上存在的表单引用,这比.closest()Chrome(IE和IE8)快5-10倍.适用于IE6和7.

var input = $('input[type=submit]');
var form = input.length > 0 ? $(input[0].form) : $();
Run Code Online (Sandbox Code Playgroud)

  • 你提到IE8.这适用于版本6,7和9吗? (2认同)

use*_*ser 14

对我来说,这看起来最简单/最快:

$('form input[type=submit]').click(function() { // attach the listener to your button
   var yourWantedObjectIsHere = $(this.form);   // use the native JS object with `this`
});
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,使用`$(this.form)`是最好的解决方案 (2认同)