Jquery 比将多个事件处理程序附加到DOM中的元素更好的方法
我目前正在考虑一些效率/速度问题 我在li's中嵌套了大约40个a元素和divJquery 比将多个事件处理程序附加到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="#"&
<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;
}