首先触发事件...替代在 jQuery 中使用 $._data

Make event fire first... alternative to using $._data in jQuery

我想创建一个 "confirm plugin",它将首先触发并询问用户是否 "they are sure"。明确一点,我将使用定制的确认框,而不是默认的 Window confirm() 方法。

如果是,那么它将触发绑定到它的所有其他事件。如果没有,那么它将什么都不做。

一个用例是一个删除按钮,它绑定了一个单独的单击事件,按下该按钮将删除一个元素。

如果我将我的插件附加到按钮然后它将绑定另一个点击事件并且通过使用 $._data 中的事件信息我可以将我的事件发送到列表的顶部(使其首先触发),然后我停止传播(这将停止删除元素的其他绑定触发)。如果用户在我的确认框中单击“确定”,这次我再次触发单击,只是绕过停止内容,然后它会触发原始事件

我使用的是 https://github.com/private-face/jquery.bind-first

的略微修改版本

它可以访问元素上的此信息的唯一方法是使用:

$._data($(this)[0]).events  

我想知道 "future proof" 这是怎么回事,据我所知,自 1.7 以来它已经发生了变化。有没有正式支持类似的东西的计划。

如果一切都失败了,我知道我可以确保插件和绑定在代码中首先发生,但这并不是真正最灵活的解决方案。

使用 $._data 是一个糟糕的解决方案,因此 post。也许我可以做一些花哨的自定义事件?

简短的回答是根本不是。使用,或更重要的是依赖 未记录的功能从来都不是一个好主意。

听起来你这里有一个 XY Problem。可能有许多其他方法可以实现您在这里尝试做的事情,并且使用 $._data 几乎可以肯定 不是 最佳解决方案。