Я пытаюсь заставить jquery вносить некоторые изменения в пользовательский интерфейс при использовании GWT. У меня есть уведомления, которые я добавляю на страницу, которые при нажатии должны исчезнуть. Так как может быть несколько уведомлений одного и того же типа (предупреждение, ошибка и т. Д.), Я пытаюсь динамически добавлять имя стиля только тогда, когда они нажимаются через GWT, а затем имеют jquery-эффект для этого конкретного имени класса.
Проблема в том, что функция jquery срабатывает до того, как имя стиля может быть добавлено, поэтому пользователь должен дважды щелкнуть уведомление, чтобы закрыть его.
Есть идеи?
public abstract class AbstractNotificationWidget extends Composite implements ClickHandler, HasClickHandlers {
protected abstract String getUniqueId();
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return addDomHandler(handler, ClickEvent.getType());
}
@Override
public void onClick(ClickEvent event) {
doClick(getUniqueId());
}
protected static native void doClick(String name) /*-{
$wnd.$("#" + name).click(function () {
$wnd.$(this).slideUp("slow");
$wnd.$("div", this).fadeOut("slow");
});
}-*/;
}
У меня есть подклассы, которые расширяют указанный класс
public class ErrorNotificationWidget extends AbstractNotificationWidget {
private final String uniqueId;
public ErrorNotificationWidget (String title, String message) {
uniqueId = DOM.createUniqueId();
initWidget(uiBinder.createAndBindUi(this));
this.getElement().setId(uniqueId);
this.addClickHandler(this);
}
@Override
protected String getUniqueId() {
return this.uniqueId;
}
Эти подклассы используют UIBinder, чтобы определить, как их следует рисовать. Затем эти виджеты добавляются на панель для отображения.