2013-06-22 9 views
19

1.I hanno un evento onclick su,prima unbind clic e quindi associare (jQuery)

$('#locations').click(function(){ 
$('#train').unbind('click'); 
//do some stuff 
} 

2.Una volta il pulsante di chiusura viene cliccato di nuovo

$('.close').click(function(){ 
//do some stuff 
} 

3.Then se clicco #train

$('#train').bind('click', function() { 
alert('train is clicked'); 
//do some stuff 
} 

Ora il problema è #train non è firing.Is di legarsi nuovamente l'evento sulla funzione .close?

Si prega di suggerire.Grazie in anticipo.

+0

Desidera re-associare l'elemento #train dopo aver fatto clic sul pulsante di chiusura? –

+0

quale versione di jQuery stai usando? usa '.on' e' .off' invece di '.bind'. – Omar

+0

Anch'io è quello che voglio fare.Così una volta che si fa clic sul pulsante di chiusura/id posso fare clic su #train di nuovo. –

risposta

32

Guardando la tua domanda, non ti sembra di legare indietro allo click dopo averlo unbind, quindi non si accende. (Supponendo che tu abbia mantenuto la sequenza della tua funzionalità giusta). Dovrete fare in questo modo:

//Set a function with the action you need to do after you click the train 
function trainClick() { 
    alert('train is clicked'); 
    //do some stuff 
} 

Quando sei non vincolante, chiamano unbind con il nome della funzione:

$('#locations').click(function(){ 
$('#train').unbind('click',trainClick); 
//do some stuff 
} 

Poi, per legare il clic (quando si fa clic su), devi usare:

$('.close').click(function(){ 
    $('#train').bind('click',trainClick); 
    //do some stuff 
} 

NOTA:

Un modo migliore w si potrebbe usare on e off, se si utilizza una versione superiore a jQuery v1.7 perché, beh .. non funzionerà. Nel codice sopra, è sufficiente sostituire bind con on e unbind con off.

$('#train').on('click',trainClick); 
$('#train').off('click',trainClick); 

Spero che questo aiuti!

+0

Grazie PC. Per favore datemi qualche volta per testarlo ... torneremo presto. –

+0

Fantastico! .. Risposta accettata ... Grazie mille per il vostro aiuto. –

4

VINCOLANTE e gestori non impegnativa

La chiave è Scope.

È necessario dichiarare e definire function (trainClick(){stuff it does}) all'esterno dell'handler di eventi in modo che le funzioni degli altri pulsanti possano visualizzarlo.

Di seguito è riportato un esempio.

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 
Problemi correlati