2010-12-12 32 views
5

jQuery UI源庫包含用於模擬鼠標和鍵盤事件的jquery.simulate.js文件。測試jQuery UI的東西時,使用該模擬函數而不是使用jQuery event methods有什麼好處?jquery.simulate.js和jQuery事件方法之間的區別?

+0

Zardoz,jQuery的事件方法可能有所有基本需要的東西,但插件可能會有更先進的東西..因爲它是事件的原始事件。 – kobe 2010-12-12 18:55:54

+0

@如果你自己做不了什麼,如果別人已經爲你做了這些,那麼你可以去...插件 – kobe 2010-12-12 19:06:49

+0

@gov ...我沒有看到任何先進的東西在那裏。在我看來,這兩者都觸發了相同的事件。也許有人的jQuery UI團隊在這裏回答這個問題。 – Zardoz 2010-12-12 22:17:13

回答

4

jquery.simulate.js文件僅用於模擬事件 - 它不提供像jQuery那樣的完整事件管理系統。這意味着,它會創建一個假事件對象,然後將此事件發送到DOM。這可以與jQuery的.trigger()方法進行比較,該方法做了類似的事情。

但是,事件對象有很多屬性可以修改,包括是否應該冒泡,源元素是什麼,是否按下了任何特殊鍵,鼠標點擊的確切x和y位置, 等等。當我們調用.trigger()時,jQuery隱藏了這個信息,只設置了一些默認值的必要屬性。另一方面,jquery.simulate.js專爲測試(注意該文件位於「jquery-ui/tests /」下)。出於測試目的,您需要對事件對象進行更細粒度的控制,以更好地模擬真實的用戶交互。長話短說,除非你在做測試,最有可能你根本不需要jquery.simulate.js。即使你想要它提供的一些功能,也要注意這個文件並不是jquery-ui庫的正式組成部分。

+1

-1。這裏錯過了一個非常重要的觀點。 .trigger()只會爲鍵盤事件調用事件處理程序(如果有),並觸發實際的鍵盤事件。例如 - 如果我需要觸發退格鍵盤事件,以便元素的最後一個字符被刪除,那麼敲擊keyCode = 8的keypress/keydown/keyup事件將不起作用。使用這個jquery.simulate.js可以做到這一點.https://github.com/j-ulrich/jquery-simulate-ext已經建立在這個庫上。 – 2013-04-08 08:03:53

+0

請使用.trigger()知道你是否能夠實現真正的按鍵。我需要執行相同的操作。 – 2013-04-08 08:06:09

相關問題