簡體   English   中英

Gquery-實時方法,如何正確使用它

[英]Gquery - live method, how to use it properly

我在使用Gquery時遇到問題,發現使用live()方法很難工作。 就我而言,當您要為“未來”元素定義某些行為時,它很有用。 例如,我想將背景色更改為單擊某些按鈕后創建的任何水平面板。 示例代碼附在下面。

RootPanel.get(); //before invoking live method, recommended in gwt forum
GQuery hPanel = mySelectors.getHorizontalPanel();
hPanel.live(Event.ONCLICK, new Function () {
    public boolean f (Event e) {
    int red = 100;
    int green = 100;
    int blue = 100;
    while (red < 250) {
        while (green < 250) {
            while (blue < 250) {
                String bgColor = "backgroundColor: 'rgb(" + red + "," + green + "," + blue + ")'";
                $(e).animate(bgColor,8);
                blue+=10;
            }
            green+=10;
        }
        red+=10;
    }               
    return false;
    }
});

HorizontalPanel horizontalPanel = new HorizontalPanel();
horizontalPanel.setHeight("40px");
horizontalPanel.setWidth("40px");
horizontalPanel.setStyleName("horizontal-panel");

final HorizontalPanel newPanel = new HorizontalPanel();
newPanel.add(horizontalPanel);
RootPanel.get("horizontalPanels").add(newPanel);

由於某些原因,當我在面板上單擊時,不會調用任何事件。 選擇器以以下方式聲明:

@Selector(".horizontal-panel")
GQuery getHorizontalPanel();

對於此問題的任何幫助或啟發,將不勝感激,

提前致謝!

我認為這是因為live不支持選擇器...

您可以嘗試替換這部分代碼:

GQuery hPanel = mySelectors.getHorizontalPanel();
hPanel.live(Event.ONCLICK, new Function () {

創建人:

$(".horizontal-panel").live(Event.ONCLICK, new Function () {

live()需要知道CSS選擇器。 如果您使用@Selector,則會因為GQuery在編譯時以最優化的查詢元素的方式替換它而失去了該信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM