我試圖用Backbone事件擴展現有的jQuery小部件,以便它們可以發佈可以被偵聽的Backbone事件。我的策略是在小部件的本地事件回調方法內部代理事件。例如,在jQueryUI滑塊小部件的change事件中,我想觸發一個名爲「trigger」的事件。我的難題是,這個代碼按預期工作:jQuery中的Backbone.js事件
$(function() {
var $slider = $("#slider");
_.extend($slider, Backbone.Events);
$slider.on("trigger", function(msg){
alert("triggered: " + msg)
});
$slider.slider({
change: function(event, ui) {
$slider.trigger("trigger", ui.value);
}
});
});
哪個的方式,我想要去3/4,但我寧願能夠只是做這樣的事在更改事件:
change: function(event, ui) {
$(this).trigger("trigger", ui.value);
}
...完全封裝了小部件,而不用擔心小部件的實際單例實例。我的問題是,這第二種方法不起作用,我想知道是否有人可以向我解釋爲什麼。在Firebug中,$(this)和$ slider都指向同一個DOM元素。
我一直在玩這個例子整個下午,我甚至不能讓頁面上的滑塊渲染,更不用說以被禁止的方式來拾取事件。請指教。 – Jake
對不起傑克 - 應該更清晰/更準確。我已經檢查了jQuery UI文檔並且適當地更新了答案。我還創建了一個小提琴(http://jsfiddle.net/dP8tK/1/),其中顯示了我建議的一個工作示例。 –