我有一个简单的JavaScript代码(在元素上切换一个类),当地址栏在页面上可见时,它无法在移动设备(Android chrome)上运行。
该代码是一个菜单切换按钮,“产品”菜单旁边的+按钮:
好的,所以它不能像这样工作:
但是,只要我向下滚动一点并隐藏移动地址栏,它就会起作用! :
到底是怎么回事?我很困惑。为什么显示地址栏会更改此代码的工作方式?
这是代码:
m.find( '.menu-dropdown-toggle' ).click(function(e){
e.preventDefault();
var $li = $( this ).parents( 'li' ).first();
if ($li.hasClass( 'toggle-closed' ) || ! ($li.hasClass( 'toggle-open' ) || $li.hasClass( 'current-menu-item' ) || $li.hasClass( 'current_page_ancestor' ) || $li.hasClass( 'current_page_item' ) || $li.hasClass( 'current_page_parent' ))) {
$li.removeClass( 'toggle-closed' ).addClass( 'toggle-open' );
} else {
$li.removeClass( 'toggle-open' ).addClass( 'toggle-closed' );
}
return false;
});
此外,这在其他移动网站上也可以正常使用,尤其是只有这个网站才具有地址栏可见错误(例如http://beautiful.dtbaker.net/在移动网站上可以正常运行)。
最佳答案
该事件被触发两次。第一个触发器打开菜单,第二个触发器关闭菜单。这并不能解释为什么地址栏可见时为什么会发生这种情况,但这似乎是一些调试所表明的。
可能另一个脚本可能以编程方式执行此操作,但我没有进行过如此广泛的调试。
您可以使用反跳来确保操作仅在特定时间内触发一次,这样可以解决问题,而无需实际解决原因。
关于javascript - 当页面上显示地址栏时,JavaScript代码在移动设备上不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37959900/