Получите все элементы выбора в форме, ссылаясь на $ (это) вместо $ («Выбор формы»)
-
24-09-2019 - |
Вопрос
В настоящее время я получаю все элементы выбора, которые существуют в форме со следующим:
$("form").submit(function(event)
{
// gather data
var data = GetSelectData($("form select"));
// do submit
$.post($(this).attr("action"), data, ..etc)
});
Вместо того, чтобы пройти $("form select")
, есть ли способ сказать что-то вроде
$(this).children('select') // this doesn't work, btw
Чтобы получить все элементы выбора, которые существуют в контексте формы, для которого выполняется событие «Отправить»?
Это позволит мне уменьшить свой код до следующего, перемещая все функциональные возможности в общей функции:
$("form").submit(function(event)
{
GatherDataAndSubmit($(this));
});
function GatherDataAndSubmit(obj)
{
var data = GetSelectData(obj.children('select'));
$.post(obj.attr("action"), data, ..etc)
}
Спасибо
Дейв
Решение
Использовать .найти()
Пытаться
var data = GetSelectData(obj.find('select'));
Методы .find () и .children () аналогичны, за исключением того, что последний только путешествует только один уровень вниз по дереву DOM.
$("form").submit(function(event)
{
GatherDataAndSubmit($(this));
});
function GatherDataAndSubmit(obj)
{
var data = GetSelectData(obj.find('select'));
$.post(obj.attr("action"), data, ..etc)
}
Другие советы
$("form").submit(function(event) {
// gather data
var data = GetSelectData($("select", this));
// ...
});
Всегда указывайте второй аргумент, когда это возможно, это указывает контекст / область применения, в котором селектор будет на самом деле поиск.