gpt4 book ai didi

javascript - 为什么触发事件不调用addEventListener定义的事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:44 27 4
gpt4 key购买 nike

我创建了一个示例案例:

http://jsfiddle.net/y42pu5b6/

$(function(){
function ping (){
alert( "function fired" );
console.log("fired");
}
console.log($("input#one")[0]);
$("input#one")[0].addEventListener("change", ping);
$("input#one").trigger("change");

$("input#two").on("change", ping);
$("input#two").trigger("change");

});

看来,使用 jQuery,您无法通过 addEventListener 调用“触发”和应用事件。是否有一个原因?我的想法是,由于触发器是一个 jquery 方法,它只是扫描 jQuery 对象以查找处理程序,而不是实际应用于该对象的内容。

我觉得触发器应该为所有适用的事件触发,无论它们是通过 on 还是 addEventListener 添加的。也许它正在拍摄时间帧 X 的代码快照,并将其存储在 jquery 对象中。我不确定。

也许其他人比我更了解这一点?

最佳答案

由于不同的浏览器以不同的方式处理不同的事件,jQuery 通过引入自己的 Event 来缓解这个问题。抽象层(还提供 event namespacing 以及其他好处)。

因此,当您调用 trigger 时,jQuery 只会触发它自己绑定(bind)的事件(使用 onbindclick 等),但它不会尝试触发 native 绑定(bind)的事件。

参见 http://learn.jquery.com/events/triggering-event-handlers/

关于javascript - 为什么触发事件不调用addEventListener定义的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27904528/

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