gpt4 book ai didi

javascript - jQuery .on 触发事件监听器

转载 作者:行者123 更新时间:2023-12-01 05:51:32 24 4
gpt4 key购买 nike

最佳实践是在定义后立即调用 jQuery 更改处理程序以重用代码并初始化 GUI,例如

$("#mySelect").change(function() {
$("#myTextField").val( $(this).text());
}).change(); // here the element is immediately triggered, so one does not need a separate code path for the init-case

如果不使用 .change() 立即调用,GUI 将不会反射(reflect) #myTextfield 中 #mySelect 的初始值。

对于较新版本的 jQuery,我想使用事件委托(delegate)并使用 .on() API 执行相同的操作。

$("#myForm").on('change', '#mySelect', function() {
$("#myTextField").val( $(this).text());
}).change();

这不再起作用,因为 .change() 没有在正确的元素上触发,也没有使用正确的 event.target,因此 jQuery 无法调用我的事件处理程序。

这可以工作,但不再反射(reflect)没有单独的初始化代码路径的最佳实践:

$("#myForm").on('change', '#mySelect', function() {
$("#myTextField").val( $(this).text());
});
$("#mySelect").change();

问题:有什么好的方法可以解决这个问题,而不需要重新选择元素并触发事件吗?

最佳答案

您需要找到所有元素并在它们上调用触发器...因为委托(delegate)将处理委托(delegate)给 DOM 上的其他元素(您可能知道)

您基本上必须执行第三个示例中所做的操作。我知道没有其他方法可以实现这一目标。

关于javascript - jQuery .on 触发事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21672866/

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