为什么只有鼠标移上去的那个标签class= .navTree li,请问这个到底是怎么回事?

1、我一直不是很明白function(e) 传递的是什么参数,求指教,例如我下面的代码中的e是???
2、我用jquery实现鼠标移动时改变背景的颜色的效果,其中用到了$(this),我知道$(this)是jquery对象,但是使用时不知道为什么出错了
<ul class="navTree">
<li id="Customer1" >
<dl>
<dt class="" >客户管理</dt>
<dd id="Customer_1" >今天需联系</dd>
<dd id="Customer_2" >3天内需联系</dd>
<dd id="Customer_3" >7天需联系</dd>
<dd id="Customer_4" >30天需联系</dd>
<dd id="Customer_5" >30天需联系</dd>

</dl>
</li>
<li id="Bill_1" class="" ><dl><dt>发票</dt></dl></li>
<li id="Compensation_1" class=" " ><dl><dt>补偿</dt></dl></li>
</ul>
jquery:
$(".navTree li").on("mouseover",function(e){
$(this).find("dt").removeClass("navTree-selected");
$(this).find("dd").removeClass("navTree-selected");
e.target.className="navTree-selected";
})
jquery 中当使用$(this).find("dt").removeClass("navTree-selected"),鼠标移动时,有的class去掉了“navTree-selected”,有的没有去掉,当我把$(this)替换成 $(".navTree li")时,就没有问题了,只有鼠标移上去的那个标签class= .navTree li,请问这个到底是怎么回事

慕桂英3389331
浏览 177回答 3
3回答

慕神8447489

$(this)是触发执行当前函数块(事件处理函数)最内层(距离最近的)的jQuery对象,在你的代码中就是触发了mouseover事件的对象。function(e)中的参数e是事件对象,根据事件的不同,具有对应的子属性,比如键盘事件和鼠标事件等,你的代码中对应的是鼠标事件。建议:如果是为了实现鼠标滑过的动态UI,那么可以考虑使用jQuery封装的hover事件,逻辑比较清晰。

莫回无

你把事件绑定在$(".navTree li").on 上面的哇, $(".navTree li")所以这儿肯定可以撒你的 e.target.className="navTree-selected" 当中的 e 是跟你绑定事件的元素有关系的你可以试下给所有的元素都绑定 mouseover 事件 $(".navTree *").on 应该 dt dd 就也会生效了

阿波罗的战车

你自己说的很明白了$(this).find('dt')他只是在找当前对象下的“dt”并不会找 其他li下的dt而$(".navTree li")是所有li对象的集合 这样下的find就是 所有li下的 dt
打开App,查看更多内容
随时随地看视频慕课网APP