Obtener todos los elementos en un formulario Seleccionar referenciando $ (este) en lugar de $ ( “forma seleccione”)
-
24-09-2019 - |
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
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.