如何在jQuery中延迟一个事件直到另一个事件完成?

如何在jQuery中延迟一个事件直到另一个事件完成?,jquery,Jquery,我在一个元素上定义了mouseenter和mouseleave事件,在同一个元素上也定义了click事件。现在,当我单击元素并将光标从元素上移开时,首先会触发click事件,然后触发mouseleave事件,但是我想延迟click事件,直到mouseleave事件完成。我怎样才能做到 我的代码: $ele.mouseenter函数{ $'ele'。文本'onmouseinter'; }; $ele.click函数{ e、 防止违约; $'ele'。文本'onClick'; }; $ele.mo

我在一个元素上定义了mouseenter和mouseleave事件,在同一个元素上也定义了click事件。现在,当我单击元素并将光标从元素上移开时,首先会触发click事件,然后触发mouseleave事件,但是我想延迟click事件,直到mouseleave事件完成。我怎样才能做到

我的代码:

$ele.mouseenter函数{ $'ele'。文本'onmouseinter'; }; $ele.click函数{ e、 防止违约; $'ele'。文本'onClick'; }; $ele.mouseleave函数{ $'ele'。文本'onMouseLeave'; }; 测试。。。
您可以使用一个标志检查是否单击了元素,如果单击了元素,则将该标志设置为true。现在在mouseleave中检查标志是否为true,如果为true,则执行click函数

见下文

var isClicked=false; 功能延迟{ $'ele'。文本'onClick'; } $ele.mouseenterfunction{ $'ele'。文本'onmouseinter'; }; $ele.clickfunction{ isClicked=true; }; $ele.mouseleavefunction{ $'ele'。文本'onMouseLeave'; 如果被打败 一次延迟; isClicked=false; }; 测试。。。
我想到的是你可以做一些变量,比如:

mouseHit = false;
$("#ele").click( function(e){
    e.preventDefault();
  mouseHit = true;
});

$("#ele").mouseleave( function(){
  $('#ele').text('onMouseLeave');
  if (mouseHit) {
     $('#ele').text('onClick');
     mouseHit = !mouseHit;
  }
});

在这种情况下,您的变量负责确保触发了上一个click事件,但您在mouseleave事件中执行了实际操作。

good one。我也说过同样的话,但你说得早了一点,我已经试过了。我想将click事件的代码与mouseleave事件分开。我不想在mouseleave事件中使用click事件的任何代码。没有jQuery函数或类似的东西。它允许您仅在其他事件完成后执行事件?