у меня есть этот 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>
Как выбрать форму, частью которой является input[name="submitButton"]? (когда я нажимаю кнопку отправки, я хочу выбрать форму и добавить в нее некоторые поля)
input[name="submitButton"]
Я бы предложил использовать closest, чтобы выбрать ближайший соответствующий родительский элемент:
closest
$('input[name="submitButton"]').closest("form");
Вместо фильтрации по имени, я бы сделал это:
$('input[type=submit]').closest("form");
Вы можете использовать ссылку на форму, которая существует на всех входах, это намного быстрее, чем .closest() (в 5-10 раз быстрее в Chrome и IE8). Работает на IE6 и 7 тоже.
.closest()
var input = $('input[type=submit]'); var form = input.length > 0 ? $(input[0].form) : $();
Для меня это выглядит как самый простой / быстрый:
$('form input[type=submit]').click(function() { // attach the listener to your button var yourWantedObjectIsHere = $(this.form); // use the native JS object with `this` });
В браузерах HTML5 можно использовать inputElement.form - значение атрибута должно быть идентификатором элемента <form> в том же документе. Больше информации о MDN .
inputElement.form
<form>
см. Также jquery / js - Как выбрать родительскую форму на основе нажатия кнопки отправки?
$('form#myform1').submit(function(e){ e.preventDefault(); //Prevent the normal submission action var form = this; // ... Handle form submission });