Jquery 如果li有子菜单“阻止默认值”和“显示阻止子链接”,则使链接可单击
在下面的菜单中,如果没有子菜单链接,我希望链接表现正常,否则父链接应阻止默认设置,然后应在子菜单上设置一个类,该类将显示以前隐藏的子菜单项。问题是我无法获取Jquery 如果li有子菜单“阻止默认值”和“显示阻止子链接”,则使链接可单击,jquery,Jquery,在下面的菜单中,如果没有子菜单链接,我希望链接表现正常,否则父链接应阻止默认设置,然后应在子菜单上设置一个类,该类将显示以前隐藏的子菜单项。问题是我无法获取$(this).next(“.submenu”).toggleClass(“opened”)
$(this).next(“.submenu”).toggleClass(“opened”)可能是因为它已经包含在一个自身正在引用$(this)
的条件中
小提琴和下面的代码。提前谢谢
-
.wrap.子菜单{
显示:无;
}
。子菜单。已打开{
显示:块;
}
if(
美元(“.wrap ul li”)
.has(“.子菜单”)
.addClass(“hasSubMenu”)
);
$(“.wrap ul li”)。单击(函数(e){
控制台日志(“a”);
//我们只想针对具有子菜单的-
if($(this).hasClass(“hasSubMenu”)){
//首先防止链接上的默认值
e、 预防默认值();
log($(this));
//现在查找.子菜单并添加类
$(本)
.next(“子菜单”)
.toggleClass(“打开”);
}否则{
日志(“测试:无子菜单”);
}
});
好的,我想我可能有答案了。在初始的$(this)
中,我将内部的$(this)
存储在一个变量中。我不知道为什么这应该起作用,但它似乎都起作用
if (
$(".wrap ul li")
.has(".submenu")
.addClass("hasSubMenu")
);
$(".wrap ul li").click(function(e) {
console.log("a");
// we only want to target <li> that have a <ul> sub-menu
if ($(this).hasClass("hasSubMenu")) {
var $this = $(this)
// first prevent default on the link
e.preventDefault();
console.log($(this));
// now find .submenu and add class
$this
.find(".submenu")
.toggleClass("opened");
} else {
console.log("test: no submenu");
}
});
if(
美元(“.wrap ul li”)
.has(“.子菜单”)
.addClass(“hasSubMenu”)
);
$(“.wrap ul li”)。单击(函数(e){
控制台日志(“a”);
//我们只想针对具有子菜单的-
if($(this).hasClass(“hasSubMenu”)){
变量$this=$(this)
//首先防止链接上的默认值
e、 预防默认值();
log($(this));
//现在查找.子菜单并添加类
美元这个
.find(“子菜单”)
.toggleClass(“打开”);
}否则{
日志(“测试:无子菜单”);
}
});