2017-01-24 4 views
0

У меня есть GWT генерироваться аккордеоном элемент из GWTBootstrap, который производит что-то похожее на этом HTML:Удалить родительский элемент из GWT UiBinder

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

Я хотел бы повторить этот JQuery вызов, чтобы удалить внешний аккордеон элемент, не удаляя его содержимое.

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

Другими словами, я хочу, чтобы отключить функциональные возможности аккордеона автоматического открытия или закрытия при открытии другой баян, так что все гармошки, которые были открыты остаются открытыми.

Я хочу сделать это в методе onClick в своем классе Java, которому присвоен флажок на экране, который пользователь может использовать для активации/деактивации функций аккордеона.

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 (с помощью методов removeParent) есть ли другой способ сделать это?

ответ

1

Что относительно gwt-jquery? При этом вы получаете интерфейс для JQuery и может использовать unwrap метод JQueryElement, для того чтобы достигнуть точно так же:

Удалить родителей набора соответствующих элементов из DOM, оставляя соответствующие элементы на их месте.

public native JQueryElement<T> unwrap(); 

Другой интерфейс поддерживается GWT Material Design можно найти here. Он основан на gwt-jquery. Как вы можете видеть, JQueryElement.java, например, почти то же самое. Он также доступен через Maven.

Альтернатива без другой библиотеки будет способом JSNI (JavaScript Native Interface) и использовать функцию JQuery unwrap, подобную этой.

private static native void unwrapAccordionGroup() /*-{ 
     $wnd.jQuery('#test').unwrap() 
}-*/; 
+0

Я использовал GWTQuery, как вы сказали, спасибо за отзыв! Полученный код выглядит так: 'GQuery myElement = GQuery. $ (" # Test "); \t \t \t \t \t myElement.unwrap(); ' – coderwurst