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

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

return false; 
}); 

cuando hago clic con el botón secundario (para el menú contextual) varias veces y luego hago clic en html una vez, activa la alerta la cantidad de veces que hice clic derecho.jQuery obligar a disparar varias veces?

Así que si hago clic derecho una vez, hago clic izquierdo, muestra una ventana emergente una vez. Si hago clic con el botón derecho tres veces, hago clic con el botón izquierdo, se muestra la ventana emergente tres veces.

¿Por qué es esto así?

+0

¿Qué intentas hacer con ese código? adjuntando el evento 'click' a' html'? – gdoron

+0

¿Por qué volver a enlazar el controlador 'click' en el controlador' contextmenu'? Esto no tiene mucho sentido. – Tomalak

+0

Esto es una ventana emergente, y cuando hago clic en html es así cuando hago clic fuera de la ventana emergente activa este evento para cerrar el menú y cualquier otra cosa. (Hay mucho más código para esto, así que hay muchas cosas que no ves) –

Respuesta

19

$('html').unbind('click').bind('click') lo arregló.

+0

En su lugar, mueva ese código fuera del manejador de contexto 'on'. – ShankarSangoli

+0

Gracias, pero para que funcione como lo necesita debe enlazarse solo cuando se haya abierto el menú. –

+1

gracias me ayudaste (Y) –

4

Debido a que su evento de clic se realiza cada vez que ocurre un evento de menú contextual, en realidad está agregando un enlace adicional cada vez que hace clic derecho. Esta es la razón del número cada vez mayor de ejecuciones de eventos.

Usted deberá:

a) desenlazar el evento cuando el menú contextual está cerrado, o

b) se unen el evento click fuera de su función de devolución de llamada contextual.

+0

Gracias, sí, al hacer más trabajo, esto lo corrige: $ ('html'). Unbind ('clic'). Bind (' haga clic en ') –

+1

contento de poder servir :) – Kristian

Cuestiones relacionadas