Javascript 停止按钮点击?
我有两种方法Javascript 停止按钮点击?,javascript,jquery,Javascript,Jquery,我有两种方法 $('.btn-delete').click(function(){ //do A //return false? }); $('.btn-delete').click(function(){ //do B }); 当A返回false时,如何阻止“B”的发生?如果不是解决方案,您最好创建一个函数并将条件置于处理状态,您可以在第一个事件中设置标志 使用单个事件处理程序 $('.btn-delete').click
$('.btn-delete').click(function(){
//do A
//return false?
});
$('.btn-delete').click(function(){
//do B
});
当A返回false时,如何阻止“B”的发生?如果不是解决方案,您最好创建一个函数并将条件置于处理状态,您可以在第一个事件中设置标志 使用单个事件处理程序
$('.btn-delete').click(function(){
//do A
if(condition != false)
execute code of second event.
//return false?
});
使用标志
flag = true;
$('.btn-delete').click(function(){
//do A
if (something) {
flag = true;
else
flag = false;
return flag;
});
$('.btn-delete').click(function(){
if(!flag) return;
//do B
});
您最好创建一个函数并放置要处理的条件,如果这不是您可以在第一个事件中设置标志的解决方案 使用单个事件处理程序
$('.btn-delete').click(function(){
//do A
if(condition != false)
execute code of second event.
//return false?
});
使用标志
flag = true;
$('.btn-delete').click(function(){
//do A
if (something) {
flag = true;
else
flag = false;
return flag;
});
$('.btn-delete').click(function(){
if(!flag) return;
//do B
});
使用jquery事件的。这正是它的用途:
$('.btn-delete').click(function(e){
//do A
if (a is returning false)
e.stopImmediatePropagation();
});
$('.btn-delete').click(function(){
//do B
});
使用jquery事件的。这正是它的用途:
$('.btn-delete').click(function(e){
//do A
if (a is returning false)
e.stopImmediatePropagation();
});
$('.btn-delete').click(function(){
//do B
});
为什么不放在一起呢
$('.btn-delete').click(function(){
//do A
// if true do B
});
为什么不放在一起呢
$('.btn-delete').click(function(){
//do A
// if true do B
});
以防有人想要非jQuery解决方案
这不能直接在普通JavaScript中完成,因为您无法确定事件侦听器的触发顺序
据报道,
尽管EventTarget上的所有EventListener都保证
由该EventTarget接收的任何事件触发,否
规定了他们接收订单的顺序
与EventTarget上的其他EventListener相关的事件
然后,一种可能性是只在一个函数中连接所有处理程序
但如果不可能,您可以将事件委派给包装器,并在必要时停止传播:
<div class="btn-wrapper"><button class="btn-delete">Delete</button></div>
以防有人想要非jQuery解决方案
这不能直接在普通JavaScript中完成,因为您无法确定事件侦听器的触发顺序
据报道,
尽管EventTarget上的所有EventListener都保证
由该EventTarget接收的任何事件触发,否
规定了他们接收订单的顺序
与EventTarget上的其他EventListener相关的事件
然后,一种可能性是只在一个函数中连接所有处理程序
但如果不可能,您可以将事件委派给包装器,并在必要时停止传播:
<div class="btn-wrapper"><button class="btn-delete">Delete</button></div>
只要您按照正确的顺序绑定它们,就可以在返回false之前使用e.stopImmediatePropagation,只要您将参数e作为事件包含在内。参考:这个答案提供了一个更好的解决方案-你有两个处理器的原因吗?并且不能合并?只要您按照正确的顺序绑定它们,就可以在返回false之前使用e.stopImmediatePropagation,只要您将参数e作为事件包含在内。参考:这个答案提供了一个更好的解决方案-你有两个处理器的原因吗?不能合并?我个人不喜欢这种方法。6个月后,当你回来时,有点难以理解发生了什么。@LuckySoni然后在评论中说不允许其他处理程序执行。你不能查一下stopImmediatePropagation是做什么的吗?那真是太好了-explanatory@Ian是的,对,但这还是有点限制。如果我计划以后再添加更多处理程序该怎么办。。我应该回去重新修改代码吗?要想弄清楚为什么我的其他处理程序不起作用需要时间。。如果这是一个小项目,那么这可能会很好,否则我不认为这是一个好的解决方案。我个人不喜欢这种方法。6个月后,当你回来时,有点难以理解发生了什么。@LuckySoni然后在评论中说不允许其他处理程序执行。你不能查一下stopImmediatePropagation是做什么的吗?那真是太好了-explanatory@Ian是的,对,但这还是有点限制。如果我计划以后再添加更多处理程序该怎么办。。我应该回去重新修改代码吗?要想弄清楚为什么我的其他处理程序不起作用需要时间。。若这是一个小项目,那个么这可能会很好地工作,否则我认为这不是一个好的解决方案。在第二种情况下,不要忘记在第二个函数中再次将flag设置为true,为下一次迭代准备页面。按钮可以点击几次!在第二种情况下,不要忘记在第二个函数中将flag再次设置为true,以便为下一次迭代准备页面。按钮可以点击几次!