为什么Kendo UI destroy方法会删除所有子窗口小部件?

时间:2014-05-13 08:37:40

标签: javascript jquery kendo-ui

我使用kendo UI分割器将屏幕划分为2个分割区域。现在每个分割区域再次分割多次。

在某些用例中,我想销毁父分割器但保留其子分割器。

//get the splitter object of kendo
  var splitter = $splittedDiv.data("kendoSplitter");
  splitter.destroy();

但剑道正在以递归方式销毁其所有子窗口小部件。我们有解决方法吗?

基本上,我也尝试过使用splitter.remove(),但这并没有从分割栏中删除“resize”事件,当我尝试调整所有分割小部件的大小时会导致问题。

我们是否有任何可以使用kendo.destroy()的解决方法,但它只会在不触及任何子窗口小部件的情况下销毁该特定窗口小部件。

<div id="container1">
 <div id="splitA">
 </div>
 <div id="splitB">
   <div id="container2">
     <div id="splitC"></div>
     <div id="splitD"></div>
   </div>
 </div>
</div>


 Now init 
 $('#container1').kendoSplitter();
 $('#container2').kendoSplitter();

 Not destroy
 $('#container1').data("kendoSplitter").destroy();

上面的代码也会破坏#container2 splitted area。为什么呢?

1 个答案:

答案 0 :(得分:1)

这就是破坏方法的预期行为。

您可以添加自己的destroy方法,该方法不会调用kendo.destroy()(负责销毁子窗口小部件)并调用它:

kendo.ui.Splitter.fn.destroyNonRecursive = function() {
    Widget.fn.destroy.call(this);

    this._detachEvents();

    if (this.resizing) {
        this.resizing.destroy();
    }
}