这是我的看法骨干为什么我的简单骨干视图点击事件不会触发?
var TreeNode = Backbone.View.extend({
tagName : "span",
className : "ndelem dirnode",
events : {
"click" : "selectNode",
},
initialize : function() {
_.bindAll(this, "render", "selectNode");
$(this.el).append(this.model.get("fname")).attr({
"data-cid" : this.model.cid
});
},
render : function() {
this.delegateEvents();
return this;
},
selectNode : function(e) {
e.stopPropagation();
this.model.set({
isOpened : true
});
}
});
主要观点
var TreeZone = Backbone.View.extend({
el : $("#nodes"),
initialize : function() {
this.collection.bind("add", this.list, this);
},
getHtml : function(elem) {
var newItem = $("<div/>").append(elem);
return newItem.html();
newItem.remove();
},
getSelectedItem : function() {
var selectedItem = $('#nodes').jqxTree('selectedItem');
if (selectedItem != null)
return selectedItem.element;
else {
var treeItems = $('#nodes').jqxTree('getItems');
var firstItem = treeItems[0];
return firstItem.element;
}
},
list : function(file) {
var node = new TreeNode({
model : file
});
var newItem = this.getHtml(node.render().el);
var element = this.getSelectedItem();
$('#nodes').jqxTree('addTo', {
html : newItem,
}, element);
$('#nodes').jqxTree('expandItem', element);
}
});
var tree = new TreeZone({collection:dircollection});
我将元素添加到集合的场景。
但树节点点击事件没有触发。只是我将原始html添加到树节点,因为树不支持jquery对象。所以我想从获取html函数获取html。并把它交给树。
如果你想为你的视图引用一个jQuery对象,你可以使用'this。$ el'而不是'$(this.el)'。有什么地方可以查看? – Nalum
但为什么选择节点没有触发 – user1834809
您是否检查过树节点的元素是否在DOM中,是否有大小,是否在您期望的位置,并且没有被其他元素覆盖? –