event - unbind jquery
Primero desenlazar clic y luego enlazar(jQuery) (2)
1. Tengo un evento onclick en,
$(''#locations'').click(function(){
$(''#train'').unbind(''click'');
//do some stuff
}
2. Una vez que se hace clic en el botón de cerrar
$(''.close'').click(function(){
//do some stuff
}
3. Luego, de nuevo si hago clic en #train
$(''#train'').bind(''click'', function() {
alert(''train is clicked'');
//do some stuff
}
Ahora el problema es que #train no se está activando. ¿Es para volver a vincular el evento en la función .close?
Por favor sugerir. Gracias de antemano.
Mirando tu pregunta, no parece que hayas unbind
el click
después de haberlo unbind
, por lo que no se activará. (Suponiendo que haya mantenido correctamente la secuencia de su funcionalidad). Tendrás que hacerlo de esta manera:
//Set a function with the action you need to do after you click the train
function trainClick() {
alert(''train is clicked'');
//do some stuff
}
Cuando estés desvinculando, llama a unbind
con el nombre de la función:
$(''#locations'').click(function(){
$(''#train'').unbind(''click'',trainClick);
//do some stuff
}
Luego, para enlazar el clic (cuando se hace clic en #close
), #close
:
$(''.close'').click(function(){
$(''#train'').bind(''click'',trainClick);
//do some stuff
}
NOTA :
Una mejor manera sería usarla on
off
, si está usando una versión mayor que jQuery v1.7 porque, bueno ... no funcionará. En el código anterior, simplemente reemplace bind
con off
y unbind
con off
.
$(''#train'').on(''click'',trainClick);
$(''#train'').off(''click'',trainClick);
¡Espero que esto ayude!
MANIPULADORES VINCULANTES Y VINCULANTES
La clave es el alcance.
Debe declarar y definir la function (trainClick(){stuff it does})
fuera del controlador de eventos para que las funciones de los otros botones puedan verla.
A continuación se muestra un ejemplo.
function trainClick()
{
alert("train is clicked"); //Notice this function is declared outside event handlers below
}
$(''#button1'').on("click", trainClick); //this calls the above function
$("#button2").on("click",function(){
$("#button1").off("click",trainClick); //unbinds button1 from trainClick() function (event handler)
});//End Button 2 click
$("#button3").on("click",function(){
$("#button1").on("click",trainClick); //binds button1 to trainClick() function (event handler)
});//End Button 2 click