我試圖保持觸發使用這兩行代碼中的一個事件的控件:的jQuery UI部件「變」事件
this.element.trigger('change'); // or...
stop: function (event, ui) { that.element.change(); }
字「變」中的代碼只出現4次,以上述兩種形式之一。但是,我不知道這裏發生了什麼。在變更調用中沒有事件處理程序,並且沒有綁定,委託,或實時調用,因此可以設置外部事件。任何人都可以填補我嗎?有沒有關於此的文檔?謝謝。
我試圖保持觸發使用這兩行代碼中的一個事件的控件:的jQuery UI部件「變」事件
this.element.trigger('change'); // or...
stop: function (event, ui) { that.element.change(); }
字「變」中的代碼只出現4次,以上述兩種形式之一。但是,我不知道這裏發生了什麼。在變更調用中沒有事件處理程序,並且沒有綁定,委託,或實時調用,因此可以設置外部事件。任何人都可以填補我嗎?有沒有關於此的文檔?謝謝。
這兩行代碼只是使用兩種不同的允許語法將更改事件觸發到this.element
。
使用.trigger():
this.element.trigger('change');
或使用速記方法.change():
that.element.change();
實際上,你可以綁定一個事件處理程序通過this.element
代表來處理這個事件的元素。
不知道你的插件,它是很難準確地回答你的是什麼this.element
。
但以自動完成插件爲例。在這其中,this.element
實際上是自動填充插件應用於的輸入字段。如果更改事件被觸發像你的問題理應做,你可以一個事件處理程序綁定到這樣的輸入:
$('#myinput')
.autocomplete()
.bind('change', function() { });
現在,如果這個插件依賴於jQuery UI Widget Factory,最好是使用方法_trigger()
觸發事件而不是jQuery .trigger()。
使用_trigger()將確保使用正確的上下文執行插件選項中定義的任何回調,並且還會爲this.element
(如上所述)觸發該事件。所以,你可以有:
$('#myinput')
.somePlugin({
change: function(e, someData) {
// "this" here will be `this.element´
}
})
.bind('change', function() { ... });
答案竟然是簡單的 - 沒有任何事件處理程序,沒有綁定的/ etc電話,jQuery不會在幕後沒有什麼,所以觸發器調用什麼也沒做。我評論他們和小部件的行爲完全一樣。衛生署。