停止onClick功能的发生
Stop an onClick function happening
我有一堆带有class="pageOpener"
的元素,这些元素在一些页面中进行。它们附加了jQuery .on('click', ... )
事件。在某个页面上,我想在继续之前验证一些输入,这样它就有了id="continuebutton"
和它自己的点击监听器。我想如果我愿意的话,我可以从特定id的活动中以某种方式取消整个类的活动,但我还没能做到。我认为其中一个问题是类事件在id之前触发(它之前已附加)。
有什么方法可以让id事件先启动吗?我想按这个顺序保存我的代码,但如果唯一的方法是将id.on('click', ... )
放在class.on('click', ... )
之前,那么我可以这样做。
那么,阻止类事件触发的正确方法是什么?返回true?
来自.on()
:的文档
但是,当前元素上附加的任何其他处理程序都将运行。要防止这种情况发生,请调用
event.stopImmediatePropagation()
。(绑定到元素的事件处理程序的调用顺序与它们被绑定的顺序相同。)
您需要首先绑定基于id的click
事件处理程序(因此它首先运行),并在其函数内部调用event.stopImmediatePropagation()
以阻止执行另一个基于类的click
事件处理程序。
如果你不能依赖于你的代码以某种方式被结构化/绑定,或者如果有人后来在不知道这个需求的情况下更改了它,那么结构/序列的更改就会破坏它。我使用自定义事件解决了类似的问题。这些可以是任何顺序的,并且不具有结构依赖性。例如,你可以做:
$('.pageOpener').on('click', function(){
// check the ID:
if ($(this).prop('id') === 'continuebutton'){
$('#continuebutton').trigger('myCustom');
}
else {
$(this).trigger('myPageOpenerClick');
}
});
$('.pageOpener').on('myPageOpenerClick', function(){
// do that page opener stuff here
});
$('#continuebutton').on('myCustom', function(){
// do that page custom stuff here
alert('Howdy, handling id stuff');
//trigger the other event now that stuff above is done:
$(this).trigger('myPageOpenerClick');
});
您可以使用.off('click')来解除click侦听器的绑定。
官方文件
更新:
你也可以这样做。
$(".your_class").on("click", function(event){
if($(this).attr("id")=="continuebutton"){
return false;
}else{
//Continue handling the click event
}
});
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- 当我按下回车键时,如何触发onclick功能
- 打开网页并自动调用OnClick功能
- 具有多个功能的Onclick属性
- 具有onclick功能的自定义复选框在实际切换复选框之前执行功能
- 一个按钮中的两个onClick功能,并希望一个接一个地发生一个单击功能
- bootstrap超级菜单,如何更改为onclick功能和手机下拉项
- 对触发其onclick功能的按钮进行键绑定
- 如何在链接上附加onclick事件以使用javascript功能
- 为什么onClick功能不是'未识别
- 更改选择选项下拉列表与onclick功能按钮
- 如何使用onclick功能在同一页面上更改流URL和,图像URL和广播名称
- 引导 - 工具提示中带有 OnClick 功能的按钮
- (飞镖)我希望触发两个不同的onclick功能,具体取决于单击时是否选中了单选按钮.我该怎么做
- 使用单选按钮OnClick和JavaScript功能动态填充数字字段
- Onclick更改按钮的名称和功能
- 如何使用ajax获得onClick和onOpstate的相同功能
- 应用样式“;游标:指针”;所有具有onClick功能的React组件
- 为什么浏览器会触发我的onclick功能
- 锚链接功能-onclick和href