gpt4 book ai didi

jquery - 是否使用 delegate()

转载 作者:行者123 更新时间:2023-12-03 23:06:10 25 4
gpt4 key购买 nike

是否有人能够解释为什么使用以下函数:

$('#potato').delegate('.frenchFry', 'click', function(e){
// do something...
});

优于:

$('#potato').bind('click', function(e){
if($(e.target).hasClass('frenchFry'){
// do something...
}
});

假设有大量代表团参与一个非常动态且不断变化的#potato?使用委托(delegate)是否有速度优势(不是来 self 能想到的任何测试)?

最佳答案

因为 e.target 将引用单击的最深层嵌套元素,该元素可能没有您要查找的类。

<div class="frenchFry>
<span>some nested text</span>
</div>
$(e.target).hasClass('frenchFry') // click on the <span> will return "false"

如果您确定实际的 e.target 始终是您想要的元素,那么这不会是问题。

拥有一个基于.delegate()的选择器,它不仅仅测试e.target本身,只是让它变得更加动态。

<小时/>

编辑:顺便说一下,你可以有点复制.delegate()这样的东西:

var node = e.target;

while( node && !$(node).is('.frenchFry') ) {
node = node.parentNode;
if( node === this || node === document.body ) {
node = null;
break;
}
}

if( node ) {
// do something
}

关于jquery - 是否使用 delegate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7029178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com