2012-01-28 12 views
6
$(".container").on("contextmenu", ".photos-bottom .albums li", function(e) { 

$('html').bind('click', function (event) { 
    alert(id); 
}); 

return false; 
}); 

quando faccio clic con il pulsante destro del mouse (per il menu contestuale) più volte e poi facendo clic con il tasto sinistro del mouse su html una volta, fa scattare l'avviso il numero di volte in cui ho fatto clic con il tasto destro.jQuery bind sparare più volte?

Quindi se faccio clic con il pulsante destro del mouse una volta, quindi clic con il tasto sinistro, viene visualizzato un popup una volta. Se faccio clic con il pulsante destro del mouse tre volte, quindi clic con il tasto sinistro, esso mostra il popup tre volte.

Perché è così?

+0

cosa stai cercando di fare con quel codice? allegando l'evento 'click' a' html'? – gdoron

+0

Perché si associa nuovamente il gestore di 'clic' al gestore' contextmenu'? Questo non ha molto senso. – Tomalak

+0

Questo è un popup, e quando collego click to html è così quando clicco fuori dal popup spara questo evento per chiudere il menu, e qualsiasi altra cosa. (C'è molto più codice per questo, quindi c'è molto che non vedi) –

risposta

19

$('html').unbind('click').bind('click') risolto.

+0

Invece muovere quel codice al di fuori del gestore del menu contestuale 'on'. – ShankarSangoli

+0

Grazie, ma per poter funzionare in base alle esigenze, è necessario eseguire il binding solo quando il menu è stato aperto. –

+1

grazie che mi aiuti (Y) –

4

Poiché l'evento click viene associato ogni volta che si verifica un evento del menu di scelta rapida, in realtà si aggiunge un binding aggiuntivo ogni volta che si fa clic con il pulsante destro del mouse. Questo è il motivo per il numero sempre crescente di esecuzioni di eventi.

Si debbono:

a) non associare l'evento quando viene chiuso il menu contestuale, o

b) si legano l'evento click al di fuori della vostra funzione di callback contextmenu.

+0

Grazie, sì, più lavoro in questo modo lo risolve: $ ('html'). Unbind ('click'). Bind (' clicca ') –

+1

felice di poter essere di servizio :) – Kristian