首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gquery - live方法,如何正确使用它

Gquery - live方法,如何正确使用它
EN

Stack Overflow用户
提问于 2012-06-06 22:40:41
回答 1查看 215关注 0票数 0

我在使用Gquery时遇到了一些很难使用live()方法的问题。就我而言,当你想为“未来”元素定义一些行为时,它是非常有用的。例如,我想将背景颜色更改为我在单击某些按钮后创建的任何水平面板。示例代码附在下面。

代码语言:javascript
复制
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);

由于某种原因,当我在面板上单击时,不会调用任何事件。选择器的声明方式如下:

代码语言:javascript
复制
@Selector(".horizontal-panel")
GQuery getHorizontalPanel();

在这个问题上的任何帮助或启发都将不胜感激,

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-07 19:36:07

我想是因为live不支持选择器...

你能试着替换这部分代码吗:

代码语言:javascript
复制
GQuery hPanel = mySelectors.getHorizontalPanel();
hPanel.live(Event.ONCLICK, new Function () {

出自:

代码语言:javascript
复制
$(".horizontal-panel").live(Event.ONCLICK, new Function () {

live()需要知道css选择器。如果使用@Selector,它会丢失此信息,因为GQuery会在编译时将其替换为查询元素的最优化方式

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10916507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档