Wicket:用淡入和淡出替换面板(WiQuery、JQuery)

发布于 2024-11-16 22:20:24 字数 1393 浏览 3 评论 0原文

我有一个 DIV,想要显示一个 listItem-Panel,如果我单击该 DIV,listItem-Panel 应该被 listItemDetail-Panel 替换。因此,DIV 包含一个带有 Wicket:ID=curPanel 的 Child-DIV。

    div.add(new AjaxEventBehavior("onclick") {
        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            return new AjaxCallDecorator() {

                @Override
                public CharSequence decorateScript(final CharSequence script) {
                    return String.format("$('#%s').fadeOut(1000, function(){ %s });", div.getMarkupId(), script);
                }

            };
        }

        @Override
        protected void onEvent(final AjaxRequestTarget target) {
            final Panel curPanel = (Panel) div.get("curPanel");

            if (curPanel.getClass().equals(listItemDetailPanel.class)) {
                curPanel.replaceWith(listItemPanel);
            } else {
                curPanel.replaceWith(listItemDetailPanel);
            }

            target.addComponent(div);
            target.appendJavascript("new Effect.FadIn($('" + div.getMarkupId() + "'))");
        }
    });

我使用 AjaxCallDecorator 淡出 DIV(其中包含 listItemPanel 或 listItemDetailPanel)。之后,该面板将被另一个面板替换,然后 DIV 应通过淡入出现。

但这就是问题所在!我应该怎么做,在 Ajax 替换后淡入 DIV?

您可以看到 target.appendJavascript() 调用,但这不起作用!

我需要 Wicket/WiQuery 的解决方案。我知道 jQuery 的解决方案,我想采用它们。

谢谢克里斯托夫

I have a DIV and want to show a listItem-Panel and if i click on the DIV the listItem-Panel should be replaces by a listItemDetail-Panel. For this reason, the DIV contains a Child-DIV with Wicket:ID=curPanel.

    div.add(new AjaxEventBehavior("onclick") {
        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            return new AjaxCallDecorator() {

                @Override
                public CharSequence decorateScript(final CharSequence script) {
                    return String.format("$('#%s').fadeOut(1000, function(){ %s });", div.getMarkupId(), script);
                }

            };
        }

        @Override
        protected void onEvent(final AjaxRequestTarget target) {
            final Panel curPanel = (Panel) div.get("curPanel");

            if (curPanel.getClass().equals(listItemDetailPanel.class)) {
                curPanel.replaceWith(listItemPanel);
            } else {
                curPanel.replaceWith(listItemDetailPanel);
            }

            target.addComponent(div);
            target.appendJavascript("new Effect.FadIn($('" + div.getMarkupId() + "'))");
        }
    });

I use the AjaxCallDecorator to fadeOut the DIV (which contains the listItemPanel or listItemDetailPanel). After that, the Panel will be replaced by the other one and then the DIV should appear via fadeIn.

But this is the Problem! What should I do, to fadeIn the DIV after the Ajax-Replacement?

You can see the target.appendJavascript() call, but this did not work!

I need a solution for Wicket/WiQuery. I know the solution for jQuery and i want to adopt them.

Thx Christoph

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

成熟的代价 2024-11-23 22:20:24

使用 target.prependJavaScript()。这是在 DOM 替换之前执行的。而#appendJavaScript()之后。

此外,1.5-RC5 Wicket 在其 Javascript 中支持 PubSub,并在 DOM 替换之前和之后分别发布“/dom/node/removing”和“/dom/node/added”通道的事件。

您可以订阅(使用 IHeaderResponse 将此 Javascript 添加到您的页面):
Wicket.Event.subscribe(channelName);

其中“channelName”可以是上面的完全限定名称,也可以是“*”,它将侦听所有通道。

Use target.prependJavaScript(). This is executed before the DOM replacement. While #appendJavaScript() is after.

Additionally with 1.5-RC5 Wicket supports PubSub in its Javascript and it publishes an event for "/dom/node/removing" and "/dom/node/added" channels respectively before and after the DOM replacement.

You can subscribe with (use IHeaderResponse to add this Javascript to your page):
Wicket.Event.subscribe(channelName);

where 'channelName' is either fully qualified name as the ones above or '*' which will listen for all channels.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文