使用默认值包装现有的jquery事件

时间:2011-03-16 21:56:27

标签: javascript jquery jquery-plugins

我正在试图弄清楚如何包装click事件。例如,这是我想要的代码。

$("#test").aclick(function() {
    alert('hi');
});

唯一可以做的就是自动使用e.preventDefault。 是这样的吗?

$.fn.aclick = function(e) {
   e.preventDefault();
   return $.fn.click.apply(this, arguments);
});

感谢。

1 个答案:

答案 0 :(得分:1)

绑定处理程序时,事件对象e尚不存在。您需要创建一个调用提供的默认事件处理程序:

$.fn.aclick = function (handler) {
    return this.each(function () {
        var el = this;
        $(el).click(function (e) {
            e.preventDefault();
            handler.call(el, e);
        });
    });
};