如果语句在控制台中工作,而不是在源代码中工作
If statement works in console, not in source
>我在单击函数中有以下 if 语句:
$('#rent-link').on('click', function() {
$('.house-card:not(.sold)').fadeIn('fast');
$('.for-sale').fadeOut('fast');
$('.rental').fadeIn('fast');
$('.sold').fadeOut('fast');
$('.comm').fadeOut('fast');
if ( $('.house-card:visible').length == 0 ) {
$('#no-results').show();
}
return false;
});
所有代码都包装在一个文档就绪函数中,因此这不会成为问题。我不确定为什么当为这个 if 语句设置参数以解析 true 时,它总是解析 false。当我单击 #rent-link 然后在控制台中单独运行 if 语句时,它会解析为 true。
感谢您的帮助。
编辑:
我用 settimeout 函数更新了我的代码,它奏效了。你们说得对,谢谢!
这是工作代码:
$('#rent-link').on('click', function() {
$('.house-card:not(.sold)').fadeIn('fast');
$('.for-sale').fadeOut('fast');
$('.rental').fadeIn('fast');
$('.sold').fadeOut('fast');
$('.comm').fadeOut('fast');
setTimeout(function() {
if ( $('.house-card:visible').length === 0 ) {
$('#no-results').show();
}
}, 500);
return false;
});
当 if
语句运行时,可能仍然有一些可见的.house-card
元素。
fadeIn
和 fadeOut
函数是异步的,在最终将元素设置为 hidden
之前,使用一系列间隔来淡出不透明度。if
语句很可能在函数完成之前执行,并且实际上隐藏了元素。
当您单击该按钮然后在控制台中运行语句时,在实际运行命令之前,褪色函数花费的时间可能超过半秒,因此在运行命令之前元素已经隐藏
。若要确保 if
语句在动画完成后运行,可以使用回调函数,如 http://api.jquery.com/fadeout/中所述。像这样:
$('.sold').fadeOut('fast', function() {
if ( $('.house-card:visible').length == 0 ) {
$('#no-results').show();
}
});
请注意,这只能确保没有.house-card.sold:visible
元素。我不确定.comm
和.for-sale
是否也在.house-card
元素上,但如果是,可能需要更多的时间才能确保它们都不可见。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 脚本仅在第一次源代码由 $ ajax 在 Firefox 中加载后工作
- 如果语句在控制台中工作,而不是在源代码中工作
- {{oauth_token}}在源代码中显示并工作,但不在页面上
- Javascript即使存在于源代码中也无法工作
- 使用PHP作为源代码的Jquery自动完成无法工作
- Minified JS只能通过将源代码粘贴到Controller中来工作
- 如何让jQuery UI自动完成与json源代码一起工作
- 为什么我的源代码不能工作
- 让源代码映射与评估过的代码一起工作