方法,使用.trigger()触发某些单击事件,但抑制所有其他事件
Method for triggering certain click event using .trigger() but suppressing all others
我的情况是,我试图使用jQuery .trigger()
方法触发单个事件。但是,我要触发的元素有多个单击事件侦听器。
实际上,从源代码中找到这些侦听器是什么以及它们触发的内容可能是不可行的,因为它包含在站点的主JS文件中,而且它都被缩小了,几乎无法读取。
目前我知道,当点击的元素执行某种ajax调用,并加载更多的数据到页面的DOM(这是我想触发),但它也显示一个覆盖(这是我想暂时抑制)。
因为它只是一个覆盖,所以我可以做一些变通;在点击后直接使用display:none
。然而,如果我能以某种方式抑制该元素上的所有点击事件,除了想要的事件,那就好得多了。
有什么想法,如果这实际上是可能的?如果是的话,我该怎么做呢?
您需要在事件链的顶部注册您自己的事件。并取消事件中的事件链。下面是一个编写自定义jquery扩展的解决方案。
$.fn.bindFirst = function (which, handler) {
var $elm = $(this);
$elm.unbind(which, handler);
$elm.bind(which, handler);
var events = $._data($elm[0]).events;
var registered = events[which];
registered.unshift(registered.pop());
events[which] = registered;
}
$("#elm").bindFirst("click", function(e) {
// edit: seems like preventing event does not work
// But your event triggers first anyway.
e.preventDefault();
e.stopPropagation();
});
参考:https://gist.github.com/infostreams/6540654
编辑:https://jsfiddle.net/8nb9obc0/2/我做了一个jsFiddle,似乎事件预防在这个例子中不起作用。也许还有别的办法
相关文章:
- 执行php函数的onclick事件的其他替代方案
- 单击其他元素时,我如何使用 jQuery 忽略更改事件
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 为什么不'我的窗口滚动事件根本没有启动.其他答案没有解决问题
- 从其他元素上的单击事件访问image src属性
- Phonegap iOS-设备准备不发射其他事件做
- onbeforeunload事件在我的代码中没有触发,但其他示例可以工作
- 如何将单击事件绑定到其他类
- 停止内部事件处理程序冒泡的其他方法,jQuery
- 存在其他参数时访问Javascript事件
- 如何在不干扰网站其他部分的情况下,在画布上捕捉keydown事件
- Ajax 请求正在取消页面上的其他 JS 事件
- 可以使 jquery 点击事件在所有其他点击事件之后执行
- 捕获在Windows应用程序中启动其他应用程序的用户事件
- 如何使用cURL或其他方式在点击时执行事件
- 当其他事件发生时,用javascript隐藏的文本框将变为可见
- ext.js中还有其他事件我应该使用吗
- 将事件绑定到其他UI组件's函数,在Kendo MVVM中
- 更改时事件会触发其他事件
- 如何根据其他组件中的事件更新组件URL