javascript - jQueryUI 模态添加功能到默认值

标签 javascript jquery jquery-ui jquery-ui-dialog

我总是发现自己在修理this chrome scrollbar issue在我添加的每个 jQueryUI 模式上。所以,我想我可以将该代码添加到 jqueryUI 对话框默认值中。我发现this question但无法完全弥合差距并将其应用到我的代码中。

$.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!');
    }
});

所以我的问题分为两部分;如何堆叠函数而不是覆盖它们?我应该首先这样做吗?谢谢!

这是一个jsfiddle: http://jsfiddle.net/McWatt/HSA8M/

最佳答案

解决方案比这简单得多。您可以通过覆盖 $.ui.dialog.overlay.events 来删除这些事件,这将阻止它们被绑定(bind)到开头:

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

注意:如果删除 keydown,您将无法使用转义键关闭对话框。您可能还想看看重写 create 方法。检查source了解更多信息。

参见test case on jsFiddle

关于javascript - jQueryUI 模态添加功能到默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7519489/

相关文章:

javascript - 对 templateURL 使用部分时不显示 AngularJS 模态

javascript - 查找哪个li被点击

jquery-ui - catcomplete 的文档

javascript - 仅带有日期选择器的自定义 jQuery UI 下载不包含所有 css

javascript - 无法手动打开 Jquery Datepicker

javascript - 如何使用带钩子(Hook)的 react 功能组件测试句柄函数调用

php - 为网络/浏览器应用程序选择绘图库

javascript - 如何合并具有相同类的任意数量的(动态)表格单元格?

javascript - 创建一个 Jquery 对象的对象

javascript - 在没有循环的情况下测试一组元素之间的 html5 数据相等性