Wicket中的动画ModalDialog

时间:2012-11-28 06:46:16

标签: jquery ajax jquery-animate wicket

我希望通过使用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函数。事情就这样发生了。下面的代码片段中的“警报”被正确调用,但我所包含的JavaScripts都没有被执行。在处理初始点击(应该显示我的对话框)后查看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时遗漏了一些相当基本的东西。除了眼前的问题,我想知道是否有更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

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