Obtenir un objet JQuery vide

120

Dans le code suivant, j'ai configuré un gestionnaire de modifications sur une zone de sélection pour afficher et masquer certaines questions de suivi en fonction de la valeur de la sélection.

En outre, pour certaines valeurs de la sélection, un message supplémentaire s'affiche.

Afin de vérifier si j'ai besoin de masquer le message supplémentaire, je garde une variable appelée Précédent. Lors de l'exécution du gestionnaire, je vérifie si Précédent est nul ou si la taille est 0.

Ce serait bien d'initialiser Previous sur un objet JQuery vide afin de ne pas avoir à faire la vérification supplémentaire de null.

Faire un $ () retourne un objet de la taille 1.

Existe-t-il un moyen de créer un objet Jquery vide?

// Fonction d'initialisation.
$ (fonction () {
// Contient l'objet précédemment sélectionné pour la sélection du type de compte.

var Précédent = null; // Voici où je voudrais initialiser.
                      // quelque chose comme Précédent = $ ();


$ ("SELECT [name = 'AccountType']"). Change (
    fonction () {
        // Cacher le message précédent s'il y en avait un.
        if (Précédent == null || Précédent.size ()> 0) { 
            Précédent.hide ();
        }

        // Affiche le message s'il est trouvé et enregistre-le comme précédent.
        Précédent = $ ("#" + this.value + "_ Msg"). Show ();

        // Obtenir la première question
        var FirstQuestion = $ (". FirstQuestion");
        if (this.value === '') {
            FirstQuestion.hide ();
        }autre{
            // Afficher manuellement FirstQuestion.
            FirstQuestion.show ();
        }
    });
}

Dans le pire des cas, je pourrais faire quelque chose comme ceci:

    var Précédent = {taille: function () {return 0; }};

mais cela semble exagéré.

Tom Hubbard
la source

Réponses:

222

Cela crée un objet jQuery vide:

$([])

Mise à jour: dans les versions plus récentes de jQuery (1.4+), vous pouvez utiliser:

$()
Magnar
la source
Merci. Alors, lequel est le meilleur pour garder la compatibilité avec les versions précédentes et ultérieures? - Quoi qu'il en soit, je ne comprends toujours pas pourquoi ni l'un ni l'autre n'a fonctionné dans mon cas. Je devrais peut-être ouvrir une question à ce sujet, mais je l'ai résolue en utilisant PHP au lieu de jQuery, donc je ne peux pas vraiment creuser plus dedans pour le moment.
cregox
2
test fin: $ (). add ($ ("div")). css ('couleur', 'rouge');
zloctb
24
$();

Retourner un ensemble vide

Depuis jQuery 1.4, l'appel de la jQuery()méthode sans argument retourne un ensemble jQuery vide (avec une .lengthpropriété de 0). Dans les versions précédentes de jQuery, cela renverrait un ensemble contenant le nœud de document.

Source: api.jquery.com

Tom Hubbard
la source
6
Fournir le lien ( api.jquery.com/jQuery/#jQuery1 ) pour sauvegarder votre déclaration vous donnerait probablement plus d'avantages :).
studgeek
1
Vote positif pour la source incluse. Toujours génial d'avoir tout le contexte disponible. Un lien plus direct vers le paragraphe correspondant serait: api.jquery.com/jQuery/#returning-empty-set
ksadowski
3

Mon conseil est de ne pas le faire de cette façon. Il existe des moyens beaucoup plus simples de le faire. Considérer:

<select id="select" name="select">
  <option value="msg_1">Message 1</option>
  <option value="msg_2">Message 1</option>
  <option value="msg_3">Message 1</option>
</select>

<div class="msg_1 msg_3">
  ...
</div>

<div class="msg_1">
  ...
</div>

<div class="msg_2">
  ...
</div>

$(function() {
  $("#select").change(function() {
    var val = $(this).val();
    $("div." + val").show();
    $("div:not(." + val + ")").hide();
  });
});

Beaucoup plus facile. En gros, donnez des classes pour indiquer ce qu'il faut afficher et masquer, puis aucun suivi n'est requis. Une alternative est:

$(function() {
  $("#select").change(function() {
    var val = $(this).val();
    $("div").each(function() {
      if ($(this).hasClass(val)) {
        $(this).show();
      } else {
        $(this).hide();
      }
    });
  });
});
cletus
la source
-1

essaye ça

 var new = $([]);

Je ne suis pas un bon programmeur mais ça vous donne un objet vide :))

Bane Neba
la source
Vous recevez des votes négatifs parce que vous avez répété une réponse existante (et très ancienne). Cela n'ajoute aucune valeur à la communauté.
isherwood