0

我有一個搜索表單的Backbone視圖。該表單包含幾個元素,包括在jSlider中實現的滑塊。我想要捕獲窗體的所有更改,並相應地更新顯示的結果。Backbone.js:捕獲jQuery插件上的自定義事件?

我可以捕獲點擊事件罰款,但我不知道如何捕獲jSlider上的幻燈片事件 - 我知道how to bind custom events in Backbone,但jSlider seems not to have a way to bind it directly

這裏是我的HTML:

<form id="searchform"> 
    <input type="text" id="city" /> 
    <input type="text" id="type" /> 
    <input id="price-jslider" type="slider" name="price" value="1;500" /> 
    </form> 

這是我的骨幹代碼:

var SearchFormView = Backbone.View.extend({ 
    el: $('#searchForm'), 
    events: { 
     "click input": "updateResults", 
     // how to capture slide event on jslider? 
    }, 
    updateResults: function(e) { 
     // do stuff 
    } 
    }); 

有沒有人對如何捕捉這種事件的任何想法?從JSlider的頁面

var SearchFormView = Backbone.View.extend({ 
    el: $('#searchForm'), 
    render: function() { 
     var self = this; 
     $("#price-jslider").slider({ 
      onstatechange: function(value) { 
       self.updateResults(); 
      } 
     }); 
    }, 
    events: { 
     "click input": "updateResults" 
    }, 
    updateResults: function(e) { 
     // do stuff 
    } 
}); 
+0

是否onstatechange功能(值)無法滿足您的需求? – Lukas

+0

是的,我只是不知道如何使用'trigger'來綁定它。 – Richard

回答

2

您可以初始化jQuery的滑塊時傳遞一個onstatechange功能。

回調函數(值) 函數觸發「mouseup」事件。

當實例JSlider的,您可以定義選項的功能

$(whatever).jslider({ 
     onstatechange : function(v) { 
       //set your input value to v 
       $('#searchForm').trigger('click') 
    } 
    }) 
+0

完美答案,謝謝!我只需要在視圖的'initialize'函數內調用'this.render()'。 – Richard

+0

我會踢它一個檔次,並使用$ el上下文並利用視圖(即,$('#price-jslider',this。$ el).slider(); 我甚至會更進一步通過在事件本身中包括onstatechange(即事件:{'click input,onstatechange#price-jslider':'updateResults'}),因爲這兩個事件使用相同的處理程序。 –

0

onstatechange功能(值) 功能火災而滑塊改變狀態: