第一次单击处理程序删除元素,第二个处理程序不运行,如何同时运行?

时间:2014-02-12 20:17:45

标签: javascript jquery leaflet

我正在使用带弹出窗口的jQuery插件(leaflet.js)。我想在单击关闭按钮时执行一些操作,但由于我不是创建关闭按钮的人,因此我必须使用jQuery.on()附加处理程序,如下所示:

$(document).on('click', '.leaflet-popup-close-button', function () {
    // do stuff
}

这适用于其他事件(例如mouseover),但因为它是我点击的关闭按钮,该元素在点击它的瞬间消失,我的处理程序没有运行。

如何让我的处理程序也运行(我不想删除已存在的处理程序)?

修改

我无法使用内置的popupclose事件,因为如果弹出窗口以其他方式关闭,该事件也会触发。

3 个答案:

答案 0 :(得分:1)

我对传单不太熟悉,但我认为您需要将closeButton选项设置为false,使用您自己的关闭按钮编辑弹出窗口的DOM,并为click事件调用进行回调在您想要的任何其他代码之后togglePopupclosePopup

答案 1 :(得分:0)

您将事件处理程序附加到整个文档。这是一种古老的做法。您应该尝试将事件处理程序附加到特定元素。

例如:

$(".leaflet-popup-close-button").on('click', function () {
    ...
});

答案 2 :(得分:0)

我建议从leaflet.js中侦听一个close事件并使用它来触发你的动作: http://leafletjs.com/reference.html#popup