Come separare un evento specifico gestore

Codice:

$('#Inputfield').keyup(function(e)
        {
            if(e.which == 13)
            {
                functionXyz();
            }
            else
            {
                functionZyx();
            }
    });  


$(document).keyup(function(exit) {
              if (exit.keyCode == 27) { functionZzy(); }
});

Domanda: Come rimuovere l’evento keyup gestore di keyCode == 27 e tenere l’altra $(document).evento keyup gestori intatto?

  • Perché denominazione oggetto dell’evento “uscita”?
  • Il keyCode==27 è l’uno che è attaccato a $(document).keyup… si prega di chiarire.
InformationsquelleAutor MeProtozoan | 2010-10-19



4 Replies
  1. 80

    È necessario utilizzare una funzione denominata così è possibile fare riferimento al gestore specifico, quando si chiama .unbind(), come questo:

    function keyUpFunc(e) {
      if (e.keyCode == 27) { functionZzy(); }
    }
    $(document).keyup(keyUpFunc);

    Poi quando la separazione:

    $(document).unbind("keyup", keyUpFunc);
  2. 63

    Tuo collegare i gestori di eventi diversi elementi, in modo che è possibile rimuovere in modo sicuro il gestore dell’oggetto specifico (già detto, lo so).

    Per completezza, se si desidera allegare più gestori per lo stesso evento per la stesso oggetto, è possibile utilizzare nel namespace eventi:

    $('#Inputfield').bind('keyup.keep', function(e){/*...*/});
    $('#Inputfield').bind('keyup.notkeep', function(e){/*...*/});
    
    $('#Inputfield').unbind('keyup.notkeep');
    //or event  $('#Inputfield').unbind('.notkeep');

    Dal jQuery 1.7, i metodi .su e .off sono il modo migliore per aggiungere e rimuovere i gestori di eventi. Per questo scopo si comportano esattamente come .bind e .unbind e anche il lavoro con i namespace eventi.

    • Questa è la migliore risposta qui, il concetto di una sorta di spazio di nomi è davvero utile e lo uso per tutto il tempo. Esso fornisce il supporto se si (o, più importante di qualcun altro) aggiunge evento vincolante per lo stesso elemento in una data successiva, senza rendersene conto ha già gli eventi legati ad esso. Naturalmente se vanno e utilizzare un $(‘#myelement’).unbind(‘fuoco’), tipo di martello senza sorta di spazio di nomi vostri eventi stanno per essere scollegati comunque… Quindi per dire alle persone che lavorano con per iniziare ad usarlo!
    • questo è stato abbastanza utile, cosa nuova per me – spazi – grazie!
    • Mentre sorta di spazio di nomi può essere utile, la capacità di indirizzare una specifica istanza di una funzione che è stata associata potrebbe essere più utile. Ho diverse istanze della stessa funzione associata al documento e voglio distruggere solo uno di loro. Sorta di spazio di nomi non mi aiuta con questo.
    • sicuramente la miglior risposta
  3. 8

    jQuery consente di associare gli eventi che verranno scollegati dopo la loro prima chiamata. Se stai cercando di eseguire solo questo keyup funzione una volta, guardare la .un metodo elencati di seguito: http://api.jquery.com/one/

    $(document).one('keyup', function(e) {
                  if (e.keyCode == 27) { functionZzy(); }
    });
  4. 7

    Se si dispone di un solo gestore di un elemento, si può tranquillamente separare utilizzando unbind senza l’utilizzo di funzioni con nome come Nick Craver suggerisce. In questo caso, la chiamata

    $('#Inputfield').unbind('keyup');

    non influenzerà il gestore document.

Lascia un commento