2013-07-03 3 views
3

J'ai un événement .on('click','td', function(){}). Je le tourne .off('click','td'). Je voudrais maintenant .on() le même événement à nouveau. J'ai essayé quelques combinaisons de .on() et cela n'a pas fonctionné. Pourrait être fait en l'assignant à une variable, pas sûr de savoir comment le faire..on() un événement jQuery après un .off()

+1

[Je ne peux pas reproduire ce problème] (http://jsfiddle.net/UcHj9/) – Ohgodwhy

+0

Do Je dois redéfinir toute la fonction? Je veux .on() un événement que j'ai défini auparavant. pourrait être fait en l'assignant à une variable, pas sûr de savoir comment faire si. – change

Répondre

6

Mettez la fonction de gestionnaire d'événements dans une variable , et l'utiliser comme ceci:

var handler = function(e){ 
    //code here 
} 

//on 
$('#myselector').on('click', handler); 

//off 
//Try this, this will only turn 'handler' off 
$('#myselector').off('click', handler); 

//If the above doesn't work, then try this 
//This will turn off all your other click handlers for the same element, 
//if for some reason turning off a particular handler doesn't work! 
$('#myselector').off('click'); 

//on again 
$('#myselector').on('click', handler); 
4

Je suppose que cliquer sur le TD essayer ceci: d'abord avoir votre td une classe pour dire si elle est activée ou désactivée. Par défaut TD aura la classe td-off, comme ceci

<td class="td-off"> 

puis définissez votre événement en changeant la classe.

.on('click','td',function(){ 

    if($(this).hasClass('td-off')){ 
    $(this).removeClass('td-off'); 
    $(this).addClass('td-on'); 
    }else{ 
    $(this).removeClass('td-on'); 
    $(this).addClass('td-off'); 
    } 

}); 

puis finalement définir l'événement de votre ou de désactiver

$('.td-on').click(function(){ 
    //Your event on 
}); 

$('.td-off').click(function(){ 
    //Your event off 
}); 

Il ne peut pas être la meilleure réponse, mais je l'espère, vous obtenez l'idée

+0

ne sais pas pourquoi je n'ai pas pensé à ce sujet. Laissez-moi essayer, ça devrait marcher. – change