从GWT UIBinder中删除父元素

时间:2017-01-24 16:26:39

标签: java jquery gwt gwt-bootstrap

我有一个来自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调用,以便删除外部的accordion元素,而不删除它的内容。

 $('#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方法)有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

gwt-jquery怎么样?通过这个,您可以获得jquery的界面,并且可以使用unwrap的{​​{1}}方法来实现完全相同:

  

从DOM中删除匹配元素集的父元素   匹配元素取而代之。

JQueryElement

可以找到由GWT Material Design维护的另一个界面here。它基于gwt-jquery。如您所见,public native JQueryElement<T> unwrap(); 例如几乎相同。它也可以通过Maven获得。

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

unwrap