我有兩個視圖,一個表示客戶端視圖,另一個視圖是單個客戶端視圖。我將綁定客戶端視圖中的mouseenter
和mouseleave
事件以淡入淡出圖像上的覆蓋圖。當它本身就可以正常工作。不過,我也使用jQuery插件來做輪播效果(插件here)。一旦啓用,我的自定義事件不再起作用。有什麼辦法可以在插件初始化後委派客戶端視圖事件嗎?這是我第一次使用Backbone,所以我可能會做其他的錯誤。視圖上的骨幹重新綁定事件
下面是代碼:
// Client View
window.ClientView = Backbone.View.extend({
tagName: 'li',
template: _.template($("#client-template").html()),
className: 'client-thumb',
events: {
"mouseenter": "fadeOutOverlay",
"mouseleave": "fadeInOverlay"
},
initialize: function() {
},
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
},
fadeOutOverlay: function() {
$(this.el).find(".slider-image-overlay").fadeOut('fast');
},
fadeInOverlay: function() {
$(this.el).find(".slider-image-overlay").fadeIn('fast');
}
});
// Clients View
window.ClientsView = Backbone.View.extend({
el: "#clients",
initialize: function() {
this.collection.bind('all', this.render, this);
},
render: function() {
var $clients = $("<ul class='clearfix'></ul>");
_.each(this.collection.models, function(client) {
var view = new ClientView({model: client});
$clients.append(view.render().el);
});
$(this.el).hide().append($clients).fadeIn().scrollingCarousel();
return this;
}
});
編輯:在這裏,我想delegateEvents()
上創建的視圖(即對它們產生的事件的):
App.View.ClientsView = Backbone.View.extend({
el: "#clients",
initialize: function() {
this.collection.bind('all', this.render, this);
},
render: function() {
var $clients = $("<ul class='clearfix'></ul>");
var views = [];
_.each(this.collection.models, function(client) {
var view = new App.View.ClientView({model: client});
views.push(view); // Store created views in an array...
$clients.append(view.render().el);
});
$(this.el).hide().append($clients).fadeIn().scrollingCarousel({
// Use the plugin's callback to try to delegate events again
afterCreateFunction: function() {
_.each(views, function(view){
view.delegateEvents();
});
}
});
return this;
}
});
試過這個,但似乎沒有工作?我做對了嗎?我認爲這個插件比我想象的DOM做得更多。它看起來像觸摸了我試圖綁定的元素,以及綁定到mouseenter
和mouseleave
。我對這個插件不熟悉,看起來並不像它有一個非版本化的版本,所以我不能很好地閱讀它。
其他建議?
可能是我錯了,但是你沒有任何事件附加到你的ClientsView – Awea 2012-02-21 15:46:42
如果你不通過選擇器到第e事件對象事件綁定到視圖'el'ement – 2012-02-21 16:21:25