从JQuery元素中获取点击处理程序



我怎么能得到一个引用的点击处理程序的一个元素在JQuery?

下面是我要做的:

存储点击处理程序;更改下一次单击的单击处理程序,恢复原来的点击处理程序

var originalClick = $(settings.currentTarget).click;
$(settings.currentTarget).off("click");
$(settings.currentTarget).click(function (e) {
    e.preventDefault();
    settings.model.modal.close();
    $(settings.currentTarget).off("click");
    $(settings.currentTarget).click(originalClick);
});

上面的代码第一次工作,但是,当我再次单击元素时,它失败了:

 Uncaught TypeError: Object [object HTMLAnchorElement] has no method 'on' 

更新:
我现在意识到这是一个非常糟糕的设计。我通过在我的视图模型中维护一个可见性布尔值来解决这个问题,如果它是真的,不要重新打开模态。

$(...).click是jQuery的click()方法,而不是你的事件处理程序。

你可以使用一个未记录的内部API来获取事件处理程序列表:

jQuery._data( elem, "events" );

如果你这样做会发生什么?

  var originalClick = $(settings.currentTarget).click;
    $(settings.currentTarget).off("click");
    $(settings.currentTarget).on("click",function (e) {
        e.preventDefault();
        settings.model.modal.close();
        $(settings.currentTarget).off("click");
        $(settings.currentTarget).click(originalClick);
    });

相关内容

  • 没有找到相关文章

最新更新