我希望通过使用 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 时,我似乎遗漏了一些相当基本的东西。除了眼前的问题,我想知道是否没有更好的方法来处理这个问题。