Javascript JQuery事件方法/函数是否相互同步?

Javascript JQuery事件方法/函数是否相互同步?,javascript,jquery,Javascript,Jquery,当事件方法/函数同时使用时,我会混淆它们之间的关系 例如: $("#searchInput").blur(function(e) { var isClicked = false; $("#sresult").click(function(e) { isClicked = true; }); if(isClicked) { $("#sresult").show(150); } else { $("#sresult").hide(15

当事件方法/函数同时使用时,我会混淆它们之间的关系

例如:

$("#searchInput").blur(function(e) {
   var isClicked = false;
   $("#sresult").click(function(e) {
      isClicked = true;
   });
   if(isClicked) {
      $("#sresult").show(150);
   } else {
      $("#sresult").hide(150);
   }
});
当我在
#searchInput
上模糊时,上面的代码会显示,当你单击它时,它会显示
#sresult
,当你没有单击它时,它会隐藏

但是我的代码中有一些错误,我不知道为什么即使我单击了
#sresult
,它也会一直隐藏起来

是不是当你点击
#sresult
时,
$(“#searchInput”).blur(函数(e)
足够快,他不想在
$(“#sresult”)中等待。点击(函数(e)
来运行?事件方法是否正在等待彼此?它们是否同步?如果我错了,请纠正我

提前谢谢。

问题解决了 理解
.blur()
.click()
函数的真正作用很重要。它们将事件侦听器附加到特定元素。(最好使用
.on()
顺便说一句)

解释 对您的代码:blur激发、准备一个变量并附加另一个事件侦听器。由于if else语句也在blur回调中,它会立即执行,因此不会等待单击,这意味着
isClicked
将永远不会为真

使用嵌套事件侦听器几乎从来都不是一个好主意,您刚刚在自己的案例中看到了原因

解决方案
我认为在单击搜索按钮之前您试图隐藏搜索结果字段,对吗?如果是,我可以帮助您编写代码。不过,最简单的方法可能是为按钮附加一个侦听器,然后
.toggle()
结果。

这可能是因为单击
#sresult
会导致
#searchInput
的另一个模糊。首先解释一下您正试图使用此代码执行的操作。错误的代码不能很好地替代正确的详细解释。在其他事件处理程序中嵌套事件侦听器也是一种不好的做法,除非ss您完全了解事件序列和复合侦听器的后果我不想在单击时隐藏#sresult,而是只想在#searchInput上模糊时隐藏它。谢谢您的解释。我不想在单击时隐藏#sresult,而是只想在在#searchInput上显示为onBlur。谢谢你的解释。好的,这在你的应用程序ID中有点深,我认为你的问题已经解决了,对吗?:D