Javascript 菜单项不存在';t打开

Javascript 菜单项不存在';t打开,javascript,jquery,css,drop-down-menu,Javascript,Jquery,Css,Drop Down Menu,我发现了一个简单的下拉菜单,我觉得很好,但只有子项链接打开。 当我点击“主页”时,什么也没发生(它应该会打开谷歌页面),当我点击“info2”时,谷歌会打开 我认为它与de.js文件有关,但我就是看不到它。 希望有人能帮我一个简单的把戏 $(文档).ready(函数(){ $(“#导航>li>a”)。在(“单击”上,函数(e){ 如果($(this.parent().has(“ul”)){ e、 预防默认值(); } if(!$(this).hasClass(“打开”)){ //隐藏所有打开的

我发现了一个简单的下拉菜单,我觉得很好,但只有子项链接打开。 当我点击“主页”时,什么也没发生(它应该会打开谷歌页面),当我点击“info2”时,谷歌会打开

我认为它与de.js文件有关,但我就是看不到它。 希望有人能帮我一个简单的把戏

$(文档).ready(函数(){
$(“#导航>li>a”)。在(“单击”上,函数(e){
如果($(this.parent().has(“ul”)){
e、 预防默认值();
}
if(!$(this).hasClass(“打开”)){
//隐藏所有打开的菜单并删除所有其他类
美元(350美元);
$(“#nav li a”).removeClass(“开放”);
//打开我们的新菜单并添加开放类
$(this.next(“ul”)。向下滑动(350);
$(此).addClass(“打开”);
}
else if($(this).hasClass(“打开”)){
$(此).removeClass(“打开”);
$(本).next(“ul”).slideUp(350);
}
});
});
ul、li、td{
填充:0;
边界:0;
垂直对齐:基线;
大纲:无;
-webkit框大小:边框框;
-moz框大小:边框框;
框大小:边框框;
}
ol,ul{列表样式:无;}
表{边框折叠:折叠;边框间距:0;}
/*导航菜单样式*/
#导航{
显示:块;
宽度:280px;
保证金:0自动;
}
#导航li{字体大小:19px;文本对齐:居中;}
#nav>li>a{
显示:块;
填充:16px 18px;
颜色:#fff;
文字装饰:无;
边框底部:1px实心#212121;
背景色:#0069b3;
}
#nav>li>a:悬停,#nav>li>a.open{
颜色:#fff;
边框底色:#384f76;
背景色:#083562;
}
#导航li ul{显示:无;背景:#083562;}
#nav li ul li a{
显示:块;
背景:无;
填充:10px 0px;
文字装饰:无;
颜色:#fff;
}
#导航李:悬停{
背景:#014f86;
}

看起来.has()方法不能以这种方式使用,因为返回的不是布尔值,而是jQuery对象。更改此项:

if($(this.parent().has(“ul”)){
e、 预防默认值();
} 
对此,请告知我是否有帮助:

if($(this).parent().has(“ul”).length==1){
e、 预防默认值();
} 

如果($(this).parent().has(“ul”){e.preventDefault();}
这总是正确的。因此,链接不会被删除opened@SimoneRossaini这是不正确和无效的HTML。所以像OP那样使用HTML是不好的?因为在我的系统中工作。@RoryMcCrossan
进入
  • 是允许的。是的,我的意思是
  • 我知道这个问题已经解决了将近两个月了,但是你/某人可以帮我看看如何在单击子菜单按钮/打开页面时使此菜单不再关闭吗?我想你可以尝试删除
    removeClass(“打开”)
    。如果没有帮助,请提供代码的实际示例。Codesandbox或类似的平台将是一个很好的地方。