Jquery 子菜单单击事件不工作/触发
主菜单的点击代码适用于类更改和所有,但不适用于子菜单…当单击子菜单项(如食物或鞋子)时,它不会触发警报命令…事实上,悬停适用于子菜单,但不适用于活动菜单 HTMLJquery 子菜单单击事件不工作/触发,jquery,Jquery,主菜单的点击代码适用于类更改和所有,但不适用于子菜单…当单击子菜单项(如食物或鞋子)时,它不会触发警报命令…事实上,悬停适用于子菜单,但不适用于活动菜单 HTML <aside> <div class=sidebar> <ul class=nav> <li class="home active" data-class="page_home">HOME</li> &l
<aside>
<div class=sidebar>
<ul class=nav>
<li class="home active" data-class="page_home">HOME</li>
<li class="products" data-class="page_products">BYE</li>
<li class="ART" data-class="page_art">ART</li>
</ul>
</div>
</aside>
<article>
<div class="page_home show">
<div class="myhome">
<h1>Home</h1>
<p>this is the index page</p>
</div>
</div>
<div class="page_products">
<ul class="productcat">
<li class="food">FOOD</li>
<li class="shoes">SHOES</li>
<li class="cloths">CLOTHS</li>
</ul>
</div>
<div class="page_art">
<div class="myart">
<h1>ART</h1>
<p>this is art page</p>
</div>
</div>
</article>
CSS
body {
width:1020px;
margin:0 auto;
position:absolute;
}
aside {
float:left;
display:block;
width:20%;
}
article {
float:right;
display:block;
margin-top:0;
width:75%;
}
.page_home, .page_products, .page_art{
visibility:hidden;
}
.show {
visibility: visible;
}
.sidebar {
margin-left:10px;
}
.nav {
display:block;
margin-top:60px;
list-style-type:none;
}
ul {
list-style-type:none;
color:#000;
}
.nav > li {
background: #666 no-repeat;
width:150px;
height:65px;
color:#000;
}
.nav >li:hover {
background:#06F no-repeat;
}
.nav > li.active {
background:#06F no-repeat;
}
.productcat > li {
background: #666 no-repeat;
width:150px;
height:65px;
color:#fff;
display:inline;
padding:10px;
}
.productcat>li:hover {
background:#06F no-repeat;
}
.productcat > li.active {
background:#06F no-repeat;
}
var $this = $(this),
试用
$(".page_products ul.productcat li").on('click', function (e) {
var $this = $(this);
// Class of the one to be shown
subclazz = $this.attr("class");
alert("button clicked");
$this.addClass('active').siblings().removeClass('active');
}
我变了
subclazz = $this.data("class");
到
和
body {
width:1020px;
margin:0 auto;
position:absolute;
}
aside {
float:left;
display:block;
width:20%;
}
article {
float:right;
display:block;
margin-top:0;
width:75%;
}
.page_home, .page_products, .page_art{
visibility:hidden;
}
.show {
visibility: visible;
}
.sidebar {
margin-left:10px;
}
.nav {
display:block;
margin-top:60px;
list-style-type:none;
}
ul {
list-style-type:none;
color:#000;
}
.nav > li {
background: #666 no-repeat;
width:150px;
height:65px;
color:#000;
}
.nav >li:hover {
background:#06F no-repeat;
}
.nav > li.active {
background:#06F no-repeat;
}
.productcat > li {
background: #666 no-repeat;
width:150px;
height:65px;
color:#fff;
display:inline;
padding:10px;
}
.productcat>li:hover {
background:#06F no-repeat;
}
.productcat > li.active {
background:#06F no-repeat;
}
var $this = $(this),
到
您的代码有两个问题 您忘记了第一个事件处理程序的右括号
$(".page_products ul.productcat li").on('click', function (e) {
var $this = $(this),
// Class of the one to be shown
subclazz = $this.data("class");
alert("button clicked");
$this.addClass('active').siblings().removeClass('active');
});
^---- Missing closing braces here
其次,您正在使用data
方法来访问自定义方法
subclazz = $this.data("class");
但是您正在使用的HTML是这种形式的
<li class="food">FOOD</li>
此外,您没有在代码中的任何地方使用此变量,这是不必要的。我很惊讶你说你的第二个事件处理程序在语法错误后还能工作
在本例中,Hover在这里起作用,因为样式是使用CSS而不是javascript应用的,而javascript中的错误在应用样式时不会产生任何影响
您可以通过检查开发人员工具中的控制台来检查js中的错误
与
单击事件不同,悬停之所以有效,是因为它没有编写脚本。。。如果我猜的话,我会说你瞄准的元素是错误的,可能……如果你用$(“ul.productcat li”)
而不是$(“.page_products ul.productcat li”)
?@dimple瞄准它会发生什么。什么没有work@sushant...plz你能帮我停止批准编辑队列中的垃圾吗!你盲目批准的标签维基编辑是A)非常糟糕,B)直接从第一个谷歌结果复制的,这是明确禁止的。@meagar。。对不起。。下次我会更小心的!嘿sushant如果你能帮我
<li class="food">FOOD</li>
<li data-class="food">FOOD</li>