gpt4 book ai didi

java - 让 JQuery 作用于 GWT 动态添加的类名

转载 作者:行者123 更新时间:2023-11-29 22:41:44 34 4
gpt4 key购买 nike

我正在尝试让 jquery 在使用 GWT 时为我做一些 ui 影响。我有添加到页面的通知,点击后应该会消失。由于可能有多个相同类型的通知(警告、错误等),我试图仅在通过 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 来确定它们应该如何绘制。然后将这些小部件添加到要显示的面板中。

最佳答案

您到底想达到什么目的?根据已应用的样式或它的 id 隐藏小部件? (在当前版本中,您似乎将一个与另一个混合在一起)

如果 ClickEvent 快速触发(可以通过在它之前添加超时来测试),您可以尝试将其包装在 DeferredCommand 中.

另一种可能性是 jQuery 正在崩溃 ;) 我在 jQuery/Mootools 中使用回调时遇到了一些奇怪的问题 - 原因是这些框架扩展/更改了 function() (除其他外) ) - 然而,JSNI 的东西是从一个“干净的”iframe 执行的,jQuery 没有做任何更改(这就是为什么你必须通过 $wnd 引用主窗口)。例如,您可以通过在您的主机 HTML 页面中定义一个测试函数,然后将其作为回调函数传递到您的 void doClick(String name) 方法中来测试这是否是这里的问题:

protected static native void doClick(String name) /*-{
$wnd.$("." + name).click($wnd.jqueryTest); // BTW, why '"." + '?
}-*/;

我最初的建议仍然有效 - 使用 FocusPanel作为您的主要小部件 - 根据我的经验,尝试正确实现HasClickHandlers(和类似接口(interface))是一个 PITA,可能导致奇怪的错误和/或内存泄漏。

关于java - 让 JQuery 作用于 GWT 动态添加的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284635/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com