为什么要从focus()更改为trigger('focus')

Why change from focus() to trigger('focus')?

本文关键字:focus trigger 为什么      更新时间:2023-09-26

我在bootstrap中浏览了dropdown.js的历史,在git上发现了以下更改历史文件:

$this.focus()   // focus() being changed to trigger('focus');
$this.trigger('focus')

现在,这里的家伙对这一变化留下了评论:

通过自定义jQuery构建(不包括事件)为人们创造生活别名要容易得多。

我不太明白使用focus()trigger('focus')有什么区别,因为对我来说,两者都有相同的效果;为什么作者选择了这样的改变?

https://github.com/jquery/jquery#modules.

如果您正在进行自定义jQuery构建并排除event/alias模块,则不会有事件的快捷方式(例如.click().focus().ready()等)。

所以您必须使用.on('eventName', handler)进行事件绑定,然后使用.trigger('eventName')来触发jQuery事件。

拥有自定义jQuery构建的人可以创建或修改他们自己的focus()函数,以执行他们想要的任何操作。想象一下,如果您创建自己的focus(),它允许大量参数并链接多个回调;如果将它的用法与jQuery focus()基本函数结合起来,那将是一团糟。

当你使用触发器时,很明显你会触发一个动作;在这种情况下,聚焦一个元素。

除此之外,使用trigger()函数使代码更易于理解。