jQuery UI Dialog()插件销毁事件

时间:2012-07-10 19:11:39

标签: jquery jquery-ui jquery-ui-dialog

最近我一直在使用jQuery UI dialogr()插件,虽然我遇到了关于销毁和重新调用$(foo).dialogr(args)函数的问题,因为它不是在被销毁后再次创建对话框。

$(document).ready(function(){
    $('#init').click(function(){
        $('.test').dialogr();
    });
    $('#destroy').click(function(){
        $('.test').each(function(){
            $(this).dialogr('destroy');
        })
    });
});

以下是一个简单的对话框代码,我用它来解释会发生什么

<a href="#" id="init">generate</a>
<a href="#" id="destroy">destroy</a>
<div class="test" title="test dialog 1">
    test dialog 1
</div>
<div class="test" title="test dialog 2">
    test dialog 2
</div>

说明:在销毁对话框后,按生成不再生成它们,不返回任何错误,任何意见表示赞赏。样本http://jsfiddle.net/2zGWZ/

3 个答案:

答案 0 :(得分:0)

您需要从dialogr对象中删除.data()属性:

     $(this).dialogr('destroy');
     delete $(this).data().dialogr;   //deleting 'dialogr' property

Live demo

答案 1 :(得分:0)

使用ui dialog可以正常工作,因为您可以看到here 也许这是一个错误。

答案 2 :(得分:0)

感谢工程师,我想出了一个可以轻松隐含在dialogr()插件中的解决方案,只需用编辑器打开ui.dialogr.js并搜索:

this.element.unbind('.dialog').removeData('dialog')

然后用

替换它
this.element.unbind('.dialogr').removeData('dialogr')

对于更复杂的对话框,问题将得到解决。