標籤:style blog io 使用 ar java strong sp div
類比操作:
- elem.trigger(event);
- elem.triggerHandler(event);
- triggerHandler的不同:
- 不會引起事件的預設行為
- .trigger() 會操作 jQuery 對象匹配的所有元素,而 .triggerHandler() 隻影響第一個匹配元素。
- 由 .triggerHandler() 建立的事件不會在 DOM 樹中冒泡。
- 該方法的返回的是事件處理函數的傳回值,而不是 jQuery 對象。
- $.Event(event); 如果事件需要依賴特定的操作其他動作,則要使用Event,並設定屬性:
event = $.Event("keydown"); //keydown event; event.keyCode = 9; $doc.trigger(event);//can use triggerHandler() insteadof trigger;
例子:
function keyLogger(target) { if(!(this instanceof keyLogger)) { return new keyLogger(target); }; this.target = target; this.log = []; var self = this; this.target.off("keydown").on("keydown", function(event) { self.log.push(event.keyCode); });}QUnit.test("keylogger api behavior", function(assert) { var event, $doc = $(document), keys = keyLogger($doc); //trigger event event = $.Event("keydown"); //keydown event; event.keyCode = 9; $doc.trigger(event);//can use triggerHandler() insteadof trigger; //verify expected behavior assert.equal(keys.log.length,1,"a key was logged"); assert.equal(keys.log[0],9,"correct key was logged"); });
QUnit使用筆記-3測試使用者操作