jquery.simulate.js 和 jQuery 事件方法有什么区别?

5
jQuery UI源库包含一个jquery.simulate.js文件,用于模拟鼠标和键盘事件。在测试jQuery UI内容时,使用该模拟函数与使用jQuery事件方法相比的好处是什么?

Zardoz,jQuery事件方法可能具有所有基本所需的内容,但插件可能具有更高级的内容...因为它专门针对事件而设计。 - kobe
如果你自己无法完成某件事情,而其他人已经为你完成了,那么你可以选择使用插件。 - kobe
@gov...我在那里没有看到任何高级的东西。在我看来,两者都会触发相同的事件。也许jQuery UI团队中有人能够回答这个问题。 - medihack
如果您可以使用jQuery事件方法实现所有功能,则忽略插件。 - kobe
1个回答

4
jquery.simulate.js文件仅用于模拟事件 - 它不像jQuery一样提供完整的事件管理系统。这意味着它创建了一个虚假的事件对象,然后将此事件发送到DOM中。这可以与jQuery的.trigger()方法进行比较,其执行类似的操作。
但是,事件对象上有许多属性可以修改,包括是否应该冒泡,源元素是什么,是否按下任何特殊键,鼠标单击的确切x和y位置等等。当我们调用.trigger()时,jQuery会将其隐藏,只设置必要的属性为某些默认值。另一方面,jquery.simulate.js专为测试而设计(请注意,该文件位于“jquery-ui/tests/”下)。出于测试目的,您需要更精细地控制事件对象,以更好地模拟真实用户交互。
简而言之,除非您正在进行测试,否则大多数情况下您都不需要jquery.simulate.js。即使您想要其中一些功能,也要注意该文件并不是jquery-ui库的正式部分。

1
你在这里漏掉了一个非常重要的点。.trigger() 只会调用键盘事件的事件处理程序(如果有),而实际的键盘事件将被触发。例如,如果我需要触发退格键盘事件以删除元素的最后一个字符,则触发 keyCode=8 的 keypress/keydown/keyup 事件是行不通的。使用 jquery.simulate.js 可以做到这一点。https://github.com/j-ulrich/jquery-simulate-ext 是基于这个库构建的。 - Bhumi Singhal
请告诉我,如果使用 .trigger(),您是否能够实现实际的按键操作。我需要实现相同的功能。 - Bhumi Singhal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接