是否有一种优雅的方法可以在插件内部重载jQuery方法?
Is there an elegant way to overload a jQuery method inside of a plugin only?
我今天有点无聊,我想不出一个优雅的解决方案来解决这个问题
我继承了一个插件,我需要修改它,以允许传递一个enabled或disabled状态给它,让它分离它的所有事件,显示disabled状态等。
就像jQuery UI 插件一样,我只是想使用…
$('div').myPlugin('disabled');
这个我没有问题。
但是,插件附加了许多没有命名空间的事件。我希望事件具有命名空间,这样我就可以轻松地删除事件。
有许多事件被绑定,所以我想嘿,为什么我不重载bind()
来自动附加命名空间呢?
我想出了这个…
(function(oldBind) {
$.fn.bind = function() {
if (arguments.length >= 2) {
arguments[0] += '.my-plugin';
}
return oldBind.apply(this, arguments);
}
})($.fn.bind);
我把它放在插件的顶部,在return this.each(fn)
代码之前。
它似乎工作得很好。
然而,我扔在一个console.log(arguments[1].toString())
,并注意到(如我所料)这覆盖了主要的jQuery bind()
外的插件。
让这个重载的bind()
只对这个插件可用的最好方法是什么?
我应该简单地放置在插件$.fn.bind = oldBind
的末尾,还是有一个更简单的方法?
先保存函数,后替换。
var oldBind = $.fn.bind;
$.fn.bind = ...what ever you wanted...
$.fn.bind = oldBind;
这应该可以,它是未经测试的,所以告诉我如果它不工作。
相关文章:
- jQuery插件-从插件中调用公共方法
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 有没有一种方法可以从光滑的网格访问插件
- 将方法插入jQuery插件
- 如何在jQuery插件中创建一个公共方法
- 重写jQuery插件方法
- 无法调用方法'应用'关于为jquery谷歌地图插件设置方向的未定义
- 有没有一种方法可以重新绑定jQuery插件中引用的事件处理程序
- 如何使用jQuery扩展方法为元素或类选择器创建自定义插件
- jQuery插件作为指令,并在插件上调用公共方法
- jQuery验证插件-比较两个选择下拉列表的自定义方法
- 从jQuery select访问插件方法
- 有没有一种方法可以在运行中添加CKEditor的按钮到链接插件
- 如何使用jquery cookie插件保存toggleClass方法的状态
- 可以't从客户端应用程序引用插件中定义的静态方法
- 为什么这两种编写jQuery插件的方法是等价的
- 插件中的元素不接受 jQuery 方法
- XrayWrapper 错误(值是可调用的)在 Firefox 插件中覆盖原型方法时
- 如何使函数在整个 jQuery 插件及其所有内部方法中可用
- Javascript模块模式:如何将方法/插件注入/创建/扩展到我们自己的库中