2010-10-20 3 views
0
if (IsBestanswer == "True") 
     { 
     $(bestAnswer).addClass('IsBestanswer'); 
     $(bestAnswer).unbind('click'); 
     } 
bestAnswer.live('click', function() 
{ 

// some code.... 
}); 

En fait, je veux désactiver la propriété click sur bestanswer alors que IsBestanswer == "True". ici j'utilise la fonction unbind(). mais cela ne fonctionne pas ...comment annuler l'événement par jquery

est-il Methode pour désactiver comme l'ajout d'une propriété css ... en fait je ne sais pas ..

+0

si (IsBestanswer == "Vrai") { $ (meilleure réponse) .addClass ('IsBestanswer'); $ (meilleure réponse) .unbind ('clic'); } bestAnswer.live ('click', function() { // certains codes .... }); –

Répondre

4

Pour UNBIND un gestionnaire live, appelez die. (Je ne l'ai pas inventé cela)

Toutefois, si bestAnswer est un seul élément, il n'y a pas de point à l'aide live au lieu de bind.
live est conçu pour être utilisé avec un sélecteur qui correspondra à des éléments dans le futur.

De plus, si vous pouvez écrire bestAnswer.live, vous n'avez pas besoin d'écrire $(bestAnswer), puisqu'il s'agit déjà d'un objet jQuery.
(par opposition à un élément DOM, sélecteur ou chaîne HTML que vous auriez besoin d'appeler $ sur)

1

Vous pouvez simplement le faire dans votre gestionnaire, pas déliaison nécessaire:

$("selector for answers here").live('click', function() 
{ 
    if (!$(this).hasClass("IsBestanswer")) { 
     // do something, this isn't the best answer 
    } 
}); 
+0

effectivement je veux désactiver l'événement de clic sur l'objet bestanswer quand IsBestanswer == "Vrai" –

+0

@Nishant: Droit. La logique ci-dessus ignore le corps de l'instruction 'if' si l'élément a la classe" IsBestanswer ", ce qui semble être ce que le code de votre question essaye de faire. Je vais changer le nom de la variable jQuery ci-dessus, que j'ai cité de votre question, car c'est un peu trompeur ... –