2009-09-25 52 views
1

如何使用jQuery刪除GWT生成的錨​​點上的點擊事件?例如,我有一些GWT這樣的代碼:GWT和jQuery:如何使用jQuery刪除由GWT代碼生成的事件

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

所以它產生的HTML代碼是這樣的:

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

在非IE,我可以使用這樣的:

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

禁用點擊事件,但這不適用於IE。而我試圖使用unbind()方法,它也不起作用。有沒有辦法做到這一點?謝謝。

回答

2

有沒有一種方法可以在java源代碼中構建這種邏輯?

我認爲GWT的目的之一是免費開發人員處理瀏覽器端實現細節。但是通過改變GWT生成的客戶端代碼,可以創建一個與未記錄的GWT行爲相當強的耦合(例如,如果發生什麼情況,下一個GWT版本會爲其大多數標籤使用類「GWT-SimpleAnchor」),或者像這樣,或者說它改變了它產生的IE 7.0,但不是IE 8.0的方式......)

+0

好點。但我現在的情況是,我必須使用JavaScript代碼來做這樣的事情,而不是通過GWT代碼來解決它。 – Ben 2009-09-25 04:51:48

+0

我也勸阻使用JS可以解決問題使用GWT。另外,如果你需要從jQuery獲得特定的東西,也許你可以使用GQuery,這是GWT的端口? 2C。 – sbidwai 2009-10-03 12:45:08

+0

在我的情況下,我不得不使用JavaScript來處理由GWT生成的頁面。如果我擁有GWT代碼的控制權,我知道我應該解決GWT中的問題。順便說一句,我認爲GQuery不是GWT的端口。它只是一個類似於jQuery的GWT應用程序接口。 – Ben 2009-10-12 16:56:07

0

您是否嘗試過這裏提到的Event對象的方法:http://docs.jquery.com/Events/jQuery.EventpreventDefault()看起來很有希望。

GWT的ClickEvent也有preventDefault()功能,如果你有興趣:)(我同意,這應該做在GWT MJV - 我只使用外部JS庫複雜的東西,比如UI效果,AJAX推等)。