Получите все элементы выбора в форме, ссылаясь на $ (это) вместо $ («Выбор формы»)

StackOverflow https://stackoverflow.com/questions/2386197

Вопрос

В настоящее время я получаю все элементы выбора, которые существуют в форме со следующим:

$("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));

    // ...
});

Всегда указывайте второй аргумент, когда это возможно, это указывает контекст / область применения, в котором селектор будет на самом деле поиск.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top