Получить все элементы Select в форме, указав $ (this) вместо $ («выбор формы») - PullRequest
0 голосов
/ 05 марта 2010

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

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

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

Это позволит мне сократить код до следующего, перенеся все функции в общую функцию:

$("form").submit(function(event)
{
    GatherDataAndSubmit($(this));
});

function GatherDataAndSubmit(obj)
{
    var data = GetSelectData(obj.children('select'));

    $.post(obj.attr("action"), data, ..etc)
}

Спасибо

Dave

Ответы [ 2 ]

5 голосов
/ 05 марта 2010

Использование .find ()

Попробуйте

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)
}
1 голос
/ 05 марта 2010
$("form").submit(function(event) {
    // gather data
    var data = GetSelectData($("select", this));

    // ...
});

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

...