javascript – 使用jQuery函数作为事件

我想知道是否可以为jom操作追加jQuery的回调:

>追加
>前置
> addClass
> toggleClass
> removeClass
> val
>文字
> css
> attr
> html
>隐藏
>等

像新事件一样有效的东西.

例:

$('#mydiv').bind('hide', function(){
    console.debug('someone call hide function')
});

//then in other js file, other function, anywhere.
$('#mydiv').hide();
//hide and output 'someone call hide function'

我查看了.queuejQuery.Callback,但只有在我为这个函数制作了自己的包装器时它才会起作用?

也许是jQuery插件?

这可以在不改变所有我的js调用这个插件的情况下完成吗?不是这样的东西:

$('#mydiv').myPluginsHide();

谢谢.

最佳答案 我不知道内置任何内容,但你可以通过迭代jQuery.fn来自己完成(即你将覆盖Felix Kling建议的那些函数):

var callbacks = {};
var excluded = ['constructor','init','jquery'];
for ( var key in $.fn ) {
    var orig = $.fn[key];
    if ( !orig instanceof Function || excluded.indexOf(key) != -1 )
        continue;
    (function(key,orig) {
        callbacks[key] = []; // This is the list of callbacks for this function
        $.fn[key] = function() {
            var ret = orig.apply(this,arguments); // Applies the function normally
            var elements = this, args = arguments;
            callbacks[key].forEach(function(f) { f(elements, args); }); // Calls each callback
            return ret;
        };
    })(key,orig);
}

然后,您只需要在回调对象中的相应条目中添加/删除回调.

更新:不知道我在这里缺少什么,但不能使example工作. (编辑:嗯,忘记将变量包装在一个闭包中的经典错误……现在应该可以工作了.还为不能覆盖的函数添加了一个排除列表).

点赞