Javascript 在false条件中触发单击事件的jquery
有人能给我解释一下为什么点击事件是在这个条件下触发的,而这个条件的评估结果是错误的吗Javascript 在false条件中触发单击事件的jquery,javascript,jquery,function,Javascript,Jquery,Function,有人能给我解释一下为什么点击事件是在这个条件下触发的,而这个条件的评估结果是错误的吗 function getHeight() { if( checkWindowWidth() ) { // Returns false console.log("works"); // Not logged since condition is false $( ".class" ).on( "click", function() {
function getHeight() {
if( checkWindowWidth() ) { // Returns false
console.log("works"); // Not logged since condition is false
$( ".class" ).on( "click", function() {
// Do some things.
console.log("why working?"); // Is logged, but why?
} else {
// Do other stuff
}
}
}
getHeight();
$(window).resize(function() {
getHeight();
});
我该如何写这篇文章,这样它就不会在错误的条件下开火
更新:
看起来像是将.on
移动到getHeight()
之外,然后在中添加条件。on
可以满足我的需要
$( ".class" ).on( "click", function() {
// Do some things.
console.log("why working?"); // Is logged, but why?
}
此代码表示您正在注册
click
事件,之后每当单击发生时,它都会记录,只需运行一次即可。所以基本上你做得不对。确保在checkWindowWidth()=false之前没有调用checkWindowWidth()=true
绑定事件处理程序函数时,事件的绑定不依赖于getheight if语句中的作用域。一旦绑定,无论何时触发事件,都将调用此函数,它不再依赖于getheight函数。我猜它在某个时候返回true,当事件绑定时,它被绑定。您可能想将条件放入事件句柄中。请显示checkWindowWidth()函数。请发布有效代码。这根本不会运行。命名函数中的单击事件通常很奇怪。我认为您将普通javascript语法与jquery混淆了syntax@adeneo是的,这可能是真的,但是,我在resize上再次调用getHeight函数。所以在一个窗口大小上是正确的,但在调整大小上是错误的。我不确定我是否遵循了。当它处于一种甚至不真实的状态时,它为什么要做任何事情呢?on click不应该什么都不做吗?
.on
注册回调函数,以便在每次单击时调用。因此,在您的代码中,即使条件为true,它也会运行此代码,然后它不再需要任何条件来运行