2013-01-04 57 views
0

我有嵌套resizables使用jQuery UI。嵌套Resizables - 如何销毁的父母不是孩子?

<div id="outer"> 
    <div id="inner"></div> 
</div> 

$("#outer").resizable(); 
$("#inner").resizable(); 

我想摧毁外部可调整大小,但不是内部。不幸地只是这样做...

$("#outer").resizable("destroy"); 

...也打破了内部可调整大小。目前我能得到这个工作的唯一途径是首先摧毁了孩子,然后破坏了父母,然后重新初始化的孩子。

$("#inner").resizable("destroy"); 
$("outer").resizable("destroy"); 
$("#inner").resizable(); 

虽然这是一个简单的例子好了,在实践中很头疼,因为我的可调整大小的init是复杂的,不容易重做的飞行。

有谁知道任何其他解决方法/补丁,让我破坏外调整大小,保持内可调整大小,而不必也破坏并重新创建内的?

感谢(提前)对你的帮助。

回答

0

你可以试试这个:

var inner_clone = $('#inner').clone(true); 
$('#outer').resizable('destroy'); 
$('#inner').replaceWith(inner_clone); 

使用.clone(真)保持可调整大小的功能。

+0

谢谢,我已经尝试过。不幸的是,它不起作用 - 我的内部元素对它们有很多绑定,这种克隆似乎也打破了。 – user1031947

1

我的方法是延长可调整大小的窗口小部件,并覆盖其_destroy方法。

$.widget("ui.customResizable", $.ui.resizable, { 
    _destroy: function() { 

     this._mouseDestroy(); 

     var wrapper, 
      _destroy = function(exp) { 
       $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") 
        //The only place you need to change is replace find with children. 
        .removeData("resizable").removeData("ui-resizable").unbind(".resizable").children(".ui-resizable-handle").remove(); 
      }; 

     //TODO: Unwrap at same DOM position 
     if (this.elementIsWrapper) { 
      _destroy(this.element); 
      wrapper = this.element; 
      this.originalElement.css({ 
       position: wrapper.css("position"), 
       width: wrapper.outerWidth(), 
       height: wrapper.outerHeight(), 
       top: wrapper.css("top"), 
       left: wrapper.css("left") 
      }).insertAfter(wrapper); 
      wrapper.remove(); 
     } 

     this.originalElement.css("resize", this.originalResizeStyle); 
     _destroy(this.originalElement); 

     return this; 
    } 
}); 

不是用你的扩展插件,而不是原来的: 复制原_destroy方法您的扩展插件并更换

find(".ui-resizable-handle") 

children(".ui-resizable-handle") 

完整的代码如下调整大小。

$("#outer").customResizable(); 
$("#inner").customResizable(); 
$("#outer").customResizable("destroy"); 
相关问题