搞不懂为什么jQuery能理解我的逻辑,但在按键时选择的DIVs上的show()
和hide()
不起作用(但在页面加载时却能起到hide()
的作用)。
下面是我的PHP页面末尾的脚本。
<script>
jQuery(function(){
$("#resultset_2").hide();
$("#resultset_3").hide();
// this is working -- `#resultset_2` and `#resultset_3`
// are both set to "display:none;" on page load
$(document).keydown(function (e) {
var keyCode = e.keyCode || e.which,
arrow = {left: 37, up: 38, right: 39, down: 40 };
switch (keyCode) {
case arrow.left:
// tbd
break;
case arrow.up:
// tbd
break;
case arrow.right:
// tbd
break;
case arrow.down:
if($('#resultset_1').is(':visible')){
alert('visible');
$("#resultset_1").hide();
$("#resultset_2").show();
}
if($('#resultset_2').is(':visible')){
$("#resultset_2").hide();
$("#resultset_3").show();
}
if($('#resultset_3').is(':visible')){
$("#resultset_3").hide();
$("#resultset_1").show();
}
break;
}
});
});
</script>
按键功能正常工作,所以我知道这不是问题。当我按下键盘上的down
时,我得到一个警告'visible'
弹出窗口,指出$resultset_1
是可见的。
但是在那之后什么也没有发生,在我的情况下,jQuery会忽略$("#resultset_1").hide();
和$("#resultset_2").show();
。
我尝试过一些变体,比如
if($('#resultset_1').is(':visible')){
alert('visible');
$('#resultset_1').css('display','none');
}
具有相同的结果(警告,但忽略div更改)
为什么它不能正常工作?我如何修复它以按照定义工作?使用精简的jQuery v3.3.1
发布于 2018-06-14 06:47:23
在带有警报的if
语句中,取消隐藏#resultset_2
,因此执行第二个if
语句,再次隐藏#resultset_2
,并显示#resultset_3
。下一条if
语句也会发生同样的事情,隐藏#resultset_3
并再次显示#resultset_1
。您应该使后两个if
语句成为else if
语句。
https://stackoverflow.com/questions/50847292
复制相似问题