Obtenez tous les éléments Sélectionnez dans un formulaire en faisant référence $ (ce) au lieu de $ ( « formulaire select »)
-
24-09-2019 - |
Question
Je suis en train d'obtenir tous les éléments Sélectionnez qui existent sous une forme qui suit:
$("form").submit(function(event)
{
// gather data
var data = GetSelectData($("form select"));
// do submit
$.post($(this).attr("action"), data, ..etc)
});
Au lieu de passer à $("form select")
, est-il un moyen que je peux dire quelque chose comme
$(this).children('select') // this doesn't work, btw
pour obtenir tous les éléments choisis qui existent dans le cadre de la forme de l'événement est en cours d'exécution pour soumettre?
Cela me permettra de réduire mon code à la suivante, déplacer toutes les fonctionnalités dans une fonction commune:
$("form").submit(function(event)
{
GatherDataAndSubmit($(this));
});
function GatherDataAndSubmit(obj)
{
var data = GetSelectData(obj.children('select'));
$.post(obj.attr("action"), data, ..etc)
}
Merci
Dave
La solution
Utilisez .Find ()
Essayez
var data = GetSelectData(obj.find('select'));
Les méthodes .Find () et .children () sont similaires, sauf que ce dernier ne se déplace un seul niveau bas de la arbre DOM.
$("form").submit(function(event)
{
GatherDataAndSubmit($(this));
});
function GatherDataAndSubmit(obj)
{
var data = GetSelectData(obj.find('select'));
$.post(obj.attr("action"), data, ..etc)
}
Autres conseils
$("form").submit(function(event) {
// gather data
var data = GetSelectData($("select", this));
// ...
});
Indiquez toujours le deuxième argument lorsque cela est possible, ce paramètre définit le contexte / champ dans lequel le sélecteur sera en fait la recherche.