gpt4 book ai didi

jquery - 这个 jQuery 触发器有多贵?

转载 作者:行者123 更新时间:2023-12-01 06:24:52 25 4
gpt4 key购买 nike

This jsFiddle演示了我在说什么。本质上,我将一些元素绑定(bind)到自定义事件,然后使用调用触发器

$('*').trigger('myevent', args)

我这样做是因为我将有一些元素绑定(bind)到此事件,但我还不知道它们会是什么,并且我想尽可能地解耦此代码。调用 $('*').trigger 是否昂贵得离谱,或者因为它只会触发绑定(bind)到该事件的元素而没有那么昂贵?

换句话说,这段代码是否会遍历页面上的每个元素以查看它是否附加到此事件,或者它是否知道哪些元素并只是触发它们?如果是前者,有更好的解决办法吗?

最佳答案

更好的解决方案是绑定(bind)并触发文档事件,因为它只是一个 DOM 元素:

$(document).bind('myevent', function(e) {});

$(document).trigger('myevent');

现在,最终听起来更好的解决方案是使用事件委托(delegate):

$(document).delegate('.my-delegation-selector', 'myevent', function(e) {

});

看看 http://api.jquery.com/delegate/ 中的这个示例

<!DOCTYPE html>
<html>
<head>
<style>
p { color:red; }
span { color:blue; }
</style>
<script src="http://code.jquery.com/jquery-1.5.js"></script>
</head>
<body>
<p>Has an attached custom event.</p>
<button>Trigger custom event</button>
<span style="display:none;"></span>
<script>

$("body").delegate("p", "myCustomEvent", function(e, myName, myValue){
$(this).text("Hi there!");
$("span").stop().css("opacity", 1)
.text("myName = " + myName)
.fadeIn(30).fadeOut(1000);
});
$("button").click(function () {
$("p").trigger("myCustomEvent");
});

</script>

</body>
</html>

关于jquery - 这个 jQuery 触发器有多贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5652594/

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