我希望通过使用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时遗漏了一些相当基本的东西。除了眼前的问题,我想知道是否有更好的方法来解决这个问题。
答案 0 :(得分:0)
扩展modalwindow并覆盖getWindowOpenJavaScript()或getShowJavaScript()方法,我没有机会深入了解,但我认为你需要getShowJavaScript()。检查它返回的javascript,然后你应该能够看到你是否可以简单地附加fadeIn代码或者需要完全更改javascript。