jQueryUI模式添加函数默认值



我总是发现自己在我添加的每个jQueryUI模态上修复这个chrome滚动条问题。所以,我在想我可以将该代码添加到jQueryUI对话框默认值中。我发现了这个问题,但不能完全弥合差距,并将其应用到我的代码。

$.extend($.ui.dialog.prototype.options, {
    open: function(event, ui){
        window.setTimeout(function(){jQuery(document).unbind('mousedown.dialog-overlay').unbind('mouseup.dialog-overlay');}, 100);
    }
});

问题是,如果我在对话框打开事件中有代码,它将覆盖默认值。

$("#modalContent").dialog({
    open:function(){
        alert('Hey buddy!');
    }
});

我的问题分为两部分;我如何堆叠函数而不是覆盖它们,我应该在第一时间这样做吗?谢谢!

下面是一个示例:http://jsfiddle.net/McWatt/HSA8M/

解决方案要简单得多。您可以通过重写$.ui.dialog.overlay.events来删除这些事件,这将防止它们被绑定为以:

开头。
$.ui.dialog.overlay.events = $.map('focus,keydown,keypress'.split(','),
        function(event) { return event + '.dialog-overlay'; }).join(' ');

注意:如果你删除keydown,你将无法用转义键关闭对话框。您可能还想考虑重写create -方法。

查看jsFiddle上的测试用例

我认为你的jsfield有一个问题:

  • 对话框没有被销毁,因此打开的回调保持不变

这是一个更新的小提琴:http://jsfiddle.net/thomas_peklak/HSA8M/3/

但是,我并不建议修改库对象的默认值。在我看来,创建自己的ui要安全得多。基于ui的小部件。对话框并覆盖对象中的默认值。

你的情况似乎相当简单,但我们应该在干净和纠缠代码之间划一条线吗?

最新更新