更改多次单击事件对同一元素的优先级
Change precedence of multiple click event over the same element
我有一个网页,代码无法修改,我只需要在某些地方添加一些javascript/jquery。
好吧,已经有一个与点击事件相关联的图像了。正如我所知道的元素CLASS,我添加了我自己的点击事件监听器:
$(".co-page-link").click(function(e) {
....
}
问题是我的点击事件在之前定义的事件之前触发,我想改变这种行为。如何做到这一点?
谢谢。
如果没有其他点击处理程序,您可以颠倒绑定处理程序的顺序:
[].reverse.call($._data($('.co-page-link')[0]).events.click);
如果存在多个类为".co-page link"的元素,请考虑使用循环。
请注意,此方法不受公开支持,不同版本的语法可能不同。在较旧的jquery版本中,请使用$.data()
。
对于更多的处理程序,如果您希望最后一个hanlder成为第一个被解雇的hanlder,您可以这样取消hanlder:
//set this handler in first with keeping other already bound events
var myH = $._data( $(".co-page-link")[0], "events" ).click.pop();
$._data( $(".co-page-link")[0], "events" ).click.unshift(myH);
"问题是我的点击事件在之前定义的事件之前触发,我想改变这种行为。"
与jQuery绑定的事件处理程序总是按照绑定的顺序调用,但如果有其他未使用jQuery的处理程序绑定,则它们的顺序可能会因绑定方式而异(并且可能因浏览器而异)。
但是,直接绑定的处理程序是在委托处理程序绑定到父元素或文档之前调用的,因此,如果您在文档级别绑定委托处理程序,那么任何直接绑定到图像的处理程序都将在事件出现之前执行,因此您的处理程序将在之后启动:
$(document).on("click", ".co-page-link", function(e) {
// your code
});
这样做的缺点是,如果其他代码阻止冒泡,它就不会起作用,但你可以尝试一下。
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 为什么角度为在同一 DOM 元素上定义的指令定义“优先级”属性
- 使用 JS 对 dom 中的元素进行优先级排序的逻辑
- 指令中的优先级元素
- 更改多次单击事件对同一元素的优先级
- 我如何切换视频元素的优先级,可以在JavaScript/Html中播放和暂停
- 在angularJS中根据自定义属性优先级向列表元素中添加类
- 在一次“潜水”中元素如何确定href和onClick调用的优先级