我在bootstrap中浏览了dropdown.js的历史记录,并在git here上遇到了以下更改历史记录文件:
$this.focus() // focus() being changed to trigger('focus');
$this.trigger('focus')
现在,这里的人已经对这一变化发表了评论:
使用自定义jQuery构建排除事件的人生活 别名更容易。
我不太清楚使用focus()
或trigger('focus')
之间的区别是什么,因为对我来说两者都有相同的效果;为什么作者选择了这样的改变?
答案 0 :(得分:6)
https://github.com/jquery/jquery#modules。
如果您正在制作自定义jQuery构建并排除event/alias
模块 - 您将没有事件的快捷方式(例如.click()
,.focus()
,.ready()
等)
因此,您必须使用.on('eventName', handler)
进行事件绑定,然后使用.trigger('eventName')
来触发jQuery事件。
答案 1 :(得分:3)
拥有自定义jQuery构建的人可以创建或修改自己的focus()
函数,以实现他们想要的任何功能。想象一下,如果你创建自己的focus()
,它允许很多参数并链接多个回调;将它的用法与jQuery focus()
基本函数结合起来会很麻烦。
当您使用触发器时,显然您将触发一个动作。在这种情况下,要集中一个元素。
除此之外,使用trigger()
函数使代码更容易理解。