2009-09-25 8 views
1

Comment puis-je utiliser jQuery pour supprimer un événement click sur une ancre générée par GWT? Par exemple, j'ai un code GWT comme ceci:GWT et jQuery: comment utiliser jQuery pour supprimer les événements générés par le code GWT

Anchor a = new Anchor("name") 
a.addClickHandler(new ClickHandler(){ 
    public void onClick(ClickEvent event) { 
     //do something 
    } 
}); 

génère donc le code HTML comme ceci:

<a tabindex="0" class="gwt-Anchor" href="javascript:">name</a> 

En non-IE, je peux l'utiliser:

$('a.gwt-Anchor').attr("onclick",function() {return false;}); 

pour désactiver l'événement click, mais cela ne fonctionne pas pour IE. Et j'essaie d'utiliser la méthode unbind(), ça ne marche pas non plus. Y a-t-il un moyen de faire cela? Merci.

Répondre

2

Existe-t-il une façon de construire cette logique dans la source java?

Je pense que l'un des objectifs de GWT est de libérer les développeurs de traiter les spécificités d'implémentation côté navigateur. Mais en modifiant le code côté client produit par GWT, on crée un couplage plutôt fort avec des comportements GWT non documentés (par exemple, que se passe-t-il si la prochaine version de GWT utilise la classe 'GWT-SimpleAnchor' pour la plupart comme ça, ou dire qu'il modifie la façon dont il produit IE 7.0 mais pas IE 8.0 ...)

+0

Bon point. Mais la situation pour moi maintenant est que je dois utiliser du code JavaScript pour faire quelque chose comme ça au lieu de le résoudre par le code GWT. – Ben

+0

Je déconseillerais également d'utiliser JS où le problème peut être résolu en utilisant GWT. Aussi, s'il y a des choses spécifiques dont vous avez besoin de jQuery, peut-être pouvez-vous utiliser GQuery, qui est le port pour GWT? 2c. – sbidwai

+0

Dans ma situation, je dois utiliser JavaScript pour traiter une page générée par GWT. Si j'ai le contrôle de ces codes GWT, je comprends que je devrais résoudre le problème dans GWT. BTW, je pense que GQuery n'est pas un port pour GWT. C'est juste une API de type jQuery pour GWT. – Ben

0

Avez-vous essayé les méthodes de l'objet événement mentionné ici: http://docs.jquery.com/Events/jQuery.Event? preventDefault() semble prometteur.

GWT a aussi de ClickEvent une fonction preventDefault(), si vous êtes intéressé :) (Je suis d'accord avec mjv dans que cela devrait se faire dans GWT - Je n'utilise que les bibliothèques de JS externes pour des choses complexes, comme les effets de l'interface utilisateur, AJAX pousser, etc.).

Questions connexes