Pregunta

Así que hay dos limitaciones a mi pregunta:

  1. I debe utilizar una llamada a la función externa en mi evento de clic, y
  2. I debe utilizar un evento click en vivo, en vez unirse a un evento típico clic.

Así que mi problema es que yo estoy tratando de desatar un evento de clic después de que ocurra, y luego volver a enlazar una vez el código de evento click se ha completado. Estoy haciendo esto para evitar clics duplicados mientras que el código se encuentra actualmente en proceso (no tengo la animación fadeIn de entrada / salida que permita el botón para hacer clic dos veces o tres veces rápidamente, cumpliendo así con mi código de 2 o 3 veces, lo que se desea ONT) . El código que estoy usando es el siguiente:

$item.live("click", handleClick);

y

function handleClick(ev) {

    $(this).die("click");

    // perform code here, including things with 'ev'

    $(this).live("click", handleClick);
}

¿Estoy loco, o debería ser este trabajo sin ningún problema? En este momento, puedo hacer clic una vez, pero no es nuevo después. Tan claramente la matriz () está funcionando, pero que no está siendo re-ligado por alguna razón a esa función. He verificado que no alcanzan el código en handleClick () para volver a enlazar el clic vivo.

Algunas ideas? Cualquier ayuda sería muy apreciada. Gracias.

¿Fue útil?

Solución

De acuerdo con la documentación :

  

Los eventos en vivo en la actualidad sólo el trabajo cuando se usa contra un selector.

$(this) no es un selector.

Otros consejos

Para desvincular los controladores de clic de todo que fueron ligados usando .live (), utilice el método .die ():

$(".clickme").die("click");

Se puede utilizar este modelo para desenlazar el elemento se ha hecho clic y dejar que todos los otros viven:

$('a.myselector').live('click', function() {

    // do things

    $(this).unbind('click').live('click', function() {return false;});

    return false; // block the link
});

funciona con jQuery 1.8.2

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top