1

我希望通过使用 jQuery fadeIn() 方法显示来增强 Wicket (6.x) ModalDialog 的显示,而不是简单地显示对话框的默认行为。我首先修改了 modal.js doShow() 方法以删除样式,如下所述。

var doShow = Wicket.bind(function() {
    this.adjustOpenWindowZIndexesOnShow();
    // don't want to blatantly show
    //this.window.style.visibility="visible";
}, this);

这似乎达到了预期的效果。然后我修改了显示对话框的 AJAX 逻辑以调用fadeIn 函数。这就是事情向南发展的地方。下面代码片段中的“警报”被正确调用,但我所包含的两个 JavaScript 似乎都没有被执行。在处理初始单击(应该显示我的对话框)后查看 HTML 时,我不再在模态窗口中看到我期望的内容。

protected void showDialog(AjaxRequestTarget argTarget) {
    argTarget.appendJavaScript("alert('hello test '+$('#imageWindow'));");
    argTarget.appendJavaScript("$('#"+imageModalWindow.getMarkupId()+"').fadeIn(1000);");
    imageModalWindow.show(argTarget);
    // even try to reset visibility
    argTarget.appendJavaScript("$('#"+imageModalWindow.getMarkupId()+"').css({'visibility':'visible'});");
}

欢迎在这一点上提出任何建议。我在我的 HTML 和 Java 代码中设置了 imageWindow 的 id(和 Wicket id)。我将输出标记 id 设置为 true,但在执行 JavaScript 时,我似乎遗漏了一些相当基本的东西。除了眼前的问题,我想知道是否没有更好的方法来处理这个问题。

4

1 回答 1

0

扩展 modalwindow 并覆盖 getWindowOpenJavaScript() 或 getShowJavaScript() 方法,我没有机会深入了解,但我认为你需要 getShowJavaScript()。签出它返回的javascript,然后你应该能够看到你是否可以简单地附加fadeIn代码或需要完全更改javascript。

于 2012-11-28T11:31:39.583 回答