Ottenere un oggetto JQuery vuoto


120

Nel codice seguente ho impostato un gestore delle modifiche su una casella di selezione per mostrare e nascondere alcune domande di follow-up in base al valore della selezione.

Inoltre, per alcuni valori della selezione è visualizzato un messaggio aggiuntivo.

Per controllare se devo nascondere il messaggio in più, mantengo una variabile chiamata Precedente. All'esecuzione del gestore controllo se Previous è nullo o se la dimensione è 0.

Sarebbe bello inizializzare Previous su un oggetto JQuery vuoto in modo da non dover fare il controllo aggiuntivo per null.

L'esecuzione di $ () restituisce un oggetto con la dimensione di 1.

C'è un modo per creare un oggetto Jquery vuoto?

// Funzione Init.
$ (Function () {
// Tenere l'oggetto selezionato in precedenza per la selezione del tipo di account.

var Precedente = null; // Qui è dove vorrei inizializzare.
                      // qualcosa di simile a Precedente = $ ();


$ ( "SELECT [name = 'AccountType']"). Cambio (
    funzione () {
        // Nascondi il messaggio precedente se ce n'era uno.
        if (Precedente == null || Previous.size ()> 0) { 
            Previous.hide ();
        }

        // Mostra il messaggio se trovato e salvalo come precedente.
        Precedente = $ ("#" + this.value + "_ Msg"). Show ();

        // Ottieni la prima domanda
        var FirstQuestion = $ (". FirstQuestion");
        if (this.value === '') {
            FirstQuestion.hide ();
        }altro{
            // Mostra manualmente FirstQuestion.
            FirstQuestion.show ();
        }
    });
}

Nel peggiore dei casi potrei fare qualcosa del genere:

    var Precedente = {size: function () {return 0; }};

ma sembra eccessivo.

Risposte:


222

Questo crea un oggetto jQuery vuoto:

$([])

Aggiornamento: nelle versioni più recenti di jQuery (1.4+), puoi usare:

$()

Grazie. Quindi quale è meglio mantenere la compatibilità con le versioni precedenti e successive? - Comunque, non riesco ancora a capire perché nessuno dei due ha funzionato nel mio caso. Forse dovrei aprire una domanda a riguardo, ma l'ho risolto usando PHP invece di jQuery, quindi non posso davvero approfondire in questo momento.
cregox

2
bel test: $ (). add ($ ("div")). css ('color', 'red');
zloctb

24
$();

Restituzione di un set vuoto

A partire da jQuery 1.4, la chiamata del jQuery()metodo senza argomenti restituisce un set jQuery vuoto (con una .lengthproprietà 0). Nelle versioni precedenti di jQuery, questo restituiva un set contenente il nodo del documento.

Fonte: api.jquery.com


6
Fornire il collegamento ( api.jquery.com/jQuery/#jQuery1 ) per eseguire il backup della tua dichiarazione probabilmente ti farebbe guadagnare di più :).
studgeek

1
Votato per la fonte inclusa. Sempre fantastico avere a disposizione tutto il contesto. Un collegamento più diretto al paragrafo correlato sarebbe: api.jquery.com/jQuery/#returning-empty-set
ksadowski

3

Il mio consiglio è di non farlo in questo modo. Ci sono modi molto più semplici per farlo. Tener conto di:

<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();
  });
});

Molto più facile. Fondamentalmente dare classi per indicare cosa mostrare e nascondere e quindi non è richiesto il monitoraggio. Un'alternativa è:

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

-1

prova questo

 var new = $([]);

Non sono un buon programmatore ma ti dà un oggetto vuoto :))


Stai ricevendo voti negativi perché hai ripetuto una risposta esistente (e molto vecchia). Ciò non aggiunge alcun valore alla comunità.
Isherwood il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.