0

我有一个来自 GWTBootstrap 的 GWT 生成的手风琴元素,它产生类似于下面的 html 的内容:

<div class="accordion" id="gwt-uid-1234">
    <div class="accordion-group" id="test">
        <div class="accordion-heading">Header1</div>
            ...
    </div>
</div>

我希望复制此 jquery 调用以删除外部手风琴元素,而不删除其内容。

 $('#test').unwrap();

换句话说,我想关闭 Accordion 在打开另一个手风琴时自动打开或关闭的功能,以便所有已打开的手风琴保持打开状态。

我希望在我的 Java 类中的 onClick 方法中执行此操作,分配给屏幕上的一个复选框,用户可以使用它来激活/停用手风琴功能。

public UIPanel() {  
    initWidget(uiBinder.createAndBindUi(this));
    disableCheckbox.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            if(accordionsDisabled) {
                Window.alert("accordions enabled");
                // IGNORE THIS FOR MEANTIME - REMOVE FUNCT IS PRIORITY 1                
                accordionsDisabled = false;
            } else {
                Window.alert("accordions disabled");
                // remove outer accordion element i.e. $('#test').unwrap();
                contentPanel.getElementById("test").removeParent();
                accordionsDisabled = true;
            }
        }
    });
}

我在 Java 中使用 Element 或 Dom 对象没有成功(使用 removeParent 方法)有没有其他方法可以做到这一点?

4

1 回答 1

1

gwt-jquery呢?有了这个,你就得到了一个 jquery 的接口,并且可以使用 , 的unwrap方法来JQueryElement达到完全相同的效果:

从 DOM 中删除匹配元素集的父元素,将匹配元素留在原处。

public native JQueryElement<T> unwrap();

GWT Material Design 维护的另一个界面可以在这里找到。它基于 gwt-jquery。如您所见JQueryElement.java,示例几乎相同。它也可以通过 Maven 获得。

没有其他库的替代方法是 JSNI(JavaScript 本机接口)方法,并unwrap像这样使用 JQuery 函数。

private static native void unwrapAccordionGroup() /*-{
      $wnd.jQuery('#test').unwrap()
 }-*/;
于 2017-01-24T19:35:57.877 回答