Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 比将多个事件处理程序附加到DOM中的元素更好的方法_Jquery_Hover_Event Handling - Fatal编程技术网

Jquery 比将多个事件处理程序附加到DOM中的元素更好的方法

Jquery 比将多个事件处理程序附加到DOM中的元素更好的方法,jquery,hover,event-handling,Jquery,Hover,Event Handling,我目前正在考虑一些效率/速度问题 我在li's中嵌套了大约40个a元素和div <ul id=ul> <li><a href="#">Link</a><div>Text</div></li> <li><a href="#">Link</a><div>Text</div></li> <li><a href="#"&

我目前正在考虑一些效率/速度问题

我在li's中嵌套了大约40个a元素和div

<ul id=ul>  
<li><a href="#">Link</a><div>Text</div></li>  
<li><a href="#">Link</a><div>Text</div></li>  
<li><a href="#">Link</a><div>Text</div></li>  
<li><a href="#">Link</a><div>Text</div></li>  
<li><a href="#">Link</a><div>Text</div></li>  
....   
</ul>
我想知道是否有比为悬停事件将40个事件处理程序附加到dom更好的方法。我认为在某些浏览器中这可能会很慢

我听说过DOM遍历,比如在#ul容器上只放置一个处理程序,让浏览器(e.target)中的DOM遍历计算出悬停的元素。有人知道如何解决这个问题吗?

.delegate()
按照您的描述:

$('#ul').delegate('li', 'mouseenter', function (e) {...});
$('#ul').delegate('li', 'mouseleave', function (e) {...});
请注意,
.hover()
只是mouseenter和mouseleave这两个事件的快捷方式,因此上面对
.degelate()
进行了两次调用


即使在
$(“#ul')
上调用
.delegate()
$(此)
将引用事件处理程序中的
  • 元素。

    我认为您真正想要的是使用jQuery的您可以使用CSS来显示/隐藏div:

    #ul li div
    {
        display: none;
    }  
    
    #ul li:hover div
    {
        display: block;
    }
    

    我想你指的是
    display:block
    和添加
    #ul li div{display:none}
    #ul li div
    {
        display: none;
    }  
    
    #ul li:hover div
    {
        display: block;
    }