Gquery - живой метод, как правильно его использовать

Я сталкиваюсь с 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();

Любая помощь или свет по этому вопросу будет высоко ценится,

Заранее спасибо!

1 ответ

Решение

Я думаю, это потому, что live не поддерживает селекторы...

Не могли бы вы попробовать заменить эту часть кода:

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

от:

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

live () должен знать селекторы css. Если вы используете @Selector, он теряет эту информацию, поскольку GQuery заменяет ее во время компиляции наиболее оптимизированным способом запроса элементов.

Другие вопросы по тегам