Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery取消其他事件_Javascript_Jquery - Fatal编程技术网

Javascript JQuery取消其他事件

Javascript JQuery取消其他事件,javascript,jquery,Javascript,Jquery,我的代码中有一个buton,我需要停止其他事件单击此按钮,但我需要其他事件仍然绑定 守则: var cancel = true; $("#btn").on("click", function(ev) { console.log("FIRST CLICK"); }); $("#btn").on("click", function(ev) { console.log("SECOND CLICK"); if(cancel) { --- cancel fir

我的代码中有一个buton,我需要停止其他事件单击此按钮,但我需要其他事件仍然绑定

守则:

var cancel = true;

$("#btn").on("click", function(ev) { 
    console.log("FIRST CLICK");
});

$("#btn").on("click", function(ev) { 
    console.log("SECOND CLICK");
    if(cancel) {
       --- cancel first click---
    }
});
用法:

cancel = true;
$("#btn").click();
cancel = false;
$("#btn").click();
预期产出:

SECOND CLICK

FIRST CLICK
SECOND CLICK
我已经试过了

ev.stopImmediatePropagation(); 
ev.stopPropagation();
ev.preventDefault(); 
return false;

但是任何一项工作,我如何停止所有其他绑定的点击事件而不解除绑定?

我认为.off jquery方法是一种可行的方法

$("#btn").on("click", function(ev) { 
console.log("FIRST CLICK");
});

$("#btn").on("mousedown", function(ev) { 
console.log("SECOND CLICK");
--- cancel first click---
$("#btn").off('click');
$("#btn").text("Anything you want to do");
// then if you need to rebind you can do 
$("#btn").on("click", function(ev) { 
console.log("FIRST CLICK");
});
});
因此,您可以取消绑定,运行代码重新绑定它。但是我认为你的问题的答案是`$(function(){

很抱歉出现缩进,但这会将“取消”切换到“开/关”
我想这就是我们想要的目标。当你点击按钮时,它将切换为false到true或true到false。

我认为.off jquery方法是一种方法

$("#btn").on("click", function(ev) { 
console.log("FIRST CLICK");
});

$("#btn").on("mousedown", function(ev) { 
console.log("SECOND CLICK");
--- cancel first click---
$("#btn").off('click');
$("#btn").text("Anything you want to do");
// then if you need to rebind you can do 
$("#btn").on("click", function(ev) { 
console.log("FIRST CLICK");
});
});
所以你要解除绑定运行代码重新绑定它。但是我认为你的问题的答案是`$(function(){

很抱歉出现缩进,但这会将“取消”切换到“开/关”
我认为这是我们的目标。当你点击按钮时,它将切换为false到true或true到false。

一个解决方案是仔细考虑事件绑定的顺序。通过先绑定更重要的点击,我们可以
stopImmediatePropagation()
取消任何后续绑定

$("#btn").on("click", function(e) {
  e.stopImmediatePropagation();
  console.log("Reversed second click");
});
$("#btn").on("click", function(e) {
  console.log("Reversed first click");
});
$(“#btn”)。在(“单击”上,函数(e){
console.log(“首次单击”);
});
$(“#btn”)。在(“单击”,功能(e){
e、 停止即时复制();
console.log(“第二次单击”);
});
$(“#btn2”)。在(“单击”上,函数(e){
e、 停止即时复制();
log(“反向第二次单击”);
});
$(“#btn2”)。在(“单击”上,函数(e){
console.log(“反向第一次单击”);
});

某物
颠倒顺序

一种解决方案是仔细考虑事件绑定的顺序。通过先绑定更重要的单击,我们可以
stopimediatepropagation()
取消任何后续绑定

$("#btn").on("click", function(e) {
  e.stopImmediatePropagation();
  console.log("Reversed second click");
});
$("#btn").on("click", function(e) {
  console.log("Reversed first click");
});
$(“#btn”)。在(“单击”上,函数(e){
console.log(“首次单击”);
});
$(“#btn”)。在(“单击”,功能(e){
e、 停止即时复制();
console.log(“第二次单击”);
});
$(“#btn2”)。在(“单击”上,函数(e){
e、 停止即时复制();
log(“反向第二次单击”);
});
$(“#btn2”)。在(“单击”上,函数(e){
console.log(“反向第一次单击”);
});

某物
颠倒顺序

如果先附加第一个事件,您就无能为力了……您可以绑定mousedown而不是单击并停止它。或者您可以连接其他事件以使用eventDelegation……或者您可以覆盖jQuery添加事件的方式以便绑定第一个事件。我不明白您想要实现什么?您的事件中会发生什么?是否希望在按钮2的操作实际进行时不能单击按钮1?将单击事件绑定两次到同一id也是没有意义的。请使用开关块或if/else。是否要取消或是否可以删除其他事件处理程序?如果先附加第一个事件处理程序,则没有任何意义g你真的可以做…你可以绑定mousedown而不是单击并停止它。或者你可以连接其他事件以使用eventDelegation…或者你可以覆盖jQuery添加事件的方式,这样你就可以绑定第一个事件。我不明白你想实现什么?事件中会发生什么?你想不想单击按钮吗n 1当按钮2的操作实际正在进行时?将click事件绑定两次到同一id也没有意义。请使用开关块或if/else。是否要取消或可以删除其他事件处理程序?我喜欢这个:)但我不明白他真正想要实现的是什么我认为第一个代码可以处理一些事情,但是如果第二个代码可以被触发,他必须覆盖它大部分内容,但这会解除其他单击的绑定,而你应该阅读这一条我喜欢那一条:)但是我不明白他真正想要实现什么我认为第一个代码可以处理一些事情,但是如果第二个代码可以被触发,他必须覆盖它大部分内容,但是这会解除其他点击的绑定,而你应该阅读这篇文章