Obtener todos los elementos en un formulario Seleccionar referenciando $ (este) en lugar de $ ( “forma seleccione”)

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

Pregunta

Actualmente estoy recibiendo todos los elementos SELECT que existen en un formulario con la siguiente:

$("form").submit(function(event)
{
    // gather data
    var data = GetSelectData($("form select"));

    // do submit
    $.post($(this).attr("action"), data, ..etc)
});

En lugar de pasar en $("form select"), ¿hay alguna manera de decir algo como

$(this).children('select') // this doesn't work, btw

para obtener todos los elementos seleccionados que existen dentro del contexto de la forma del presente caso se está ejecutando para?

Esto me permitirá reducir mi código a la siguiente, moviéndose toda la funcionalidad en una función común:

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

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

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

Gracias

David

¿Fue útil?

Solución

Uso .find ()

Trate

var data = GetSelectData(obj.find('select'));
  

El .find () y .children () métodos   son similares, excepto que el último   solamente viaja un solo nivel por debajo del   DOM árbol.

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

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

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

Otros consejos

$("form").submit(function(event) {
    // gather data
    var data = GetSelectData($("select", this));

    // ...
});

Siempre especifique el segundo argumento cuando sea posible, esto especifica el contexto / ámbito en el que el selector realmente de búsqueda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top