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