gpt4 book ai didi

bind - 刷新后绑定(bind)和 live() (jQuery) 哪个更好?

转载 作者:行者123 更新时间:2023-12-01 00:45:49 25 4
gpt4 key购买 nike

我使用 AJAX 更新容器。就性能而言,哪一个更好?伪代码:

$.post('get_something.php',function(data){
$('#container').html(data).find('a').bind('click',function(){
console.log('Doh!');
});
});

还是这个?

$('#container a').live('click',function(){
console.log('Doh!');
});

$.post('get_something.php',function(data){
$('#container').html(data);
});

最佳答案

首先,我根本不建议使用live(并且 jQuery 团队已弃用它)。我会使用delegate (或新版本的 on )与整个文档相比,具有更具针对性的容器(在您的情况下,#container)。

如果你这样做,点击时的性能将非常接近相同,没有任何区别(我们在这里处理用户生成的事件,奇怪的额外几毫秒没有关系)。

不过,还有其他考虑因素需要考虑。假设我们有这个标记:

<div id="container">
<div id="wrapper">
<a>A link</a>
</div>
</div>

...以及这段代码:

$("#container").delegate('a', 'click', function() {
// Do something with the click
console.log("Link was clicked");
});
$("#wrapper").click(function() {
return false;
});

由于 a 是最深的元素,因此您希望对 a 的点击由第一个处理程序处理并查看控制台。记录条目。但您不会,因为点击在到达容器之前不会被实际处理 - 在这种情况下,它不会到达容器,因为它们之间的包装元素会停止事件。

这不是负面的(我发现delegate非常有用并且一直使用它),它只是当你设计如何处理事情时需要考虑的事情。

关于bind - 刷新后绑定(bind)和 live() (jQuery) 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9176459/

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