[英]Backbone Click Event Properties
我在这里使用了ribs.js的click
事件。 onClick事件,我想选择单击的HTML元素,将其删除并添加到添加的列表中。
我无法访问单击过的所有HTML dom元素。 获得HTML元素之后。
如果单击“中国”,则以下代码将警告“ <li>China</li>
”。
因此,如何访问所有dom属性?
Java脚本代码:
var ActionBox = Backbone.View.extend({
el:$("#container"),
events: {
"click #add li": "addItem",
"click #alert": "alertHere"
},
initialize: function(){
_.bindAll(this,"addItem","render");
this.render();
},
render:function(){
this.prepareActions();
},
addItem:function(ev){
var ac=$(ev.target).html(); // it doesn't give me "<li>US</li>" after clicking US
alert(ac);
},
prepareActions:function(){
var str="";
for(var i=0;i<actions.length;i++) str+="<li>"+actions[i]+"</li>";
$("#add ul").append(str);
}
});
var actionBox = new ActionBox();
和HTML代码如下:
<div id="container">
<table>
<tr>
<td>
<div id="add">
<ul>
<li>US</li>
<li>China</li>
<li>UK</li>
</ul>
</div>
</td>
<td>
<div id="controls">
</div>
</td>
<td>
<div id="added">
<ul></ul>
</div>
</td>
</tr>
</table>
</div>
有两个ul容器,分别添加和添加。如果我单击源中的元素,则应将其移入目标容器。
您只想使用appendTo-将其删除并将其放入您的#added UL中
$(ev.target).appendTo('#added');
我尝试使用Backbone 0.9.1自己运行它,并且一切正常。 确保您包括
var ActionBox = Backbone.View.extend({
el:$("#container"),
...
});
呈现HTML 之后 。 否则,您要在$("#container")
在DOM中实际存在之前指定它。 如果这样做,jQuery将不返回任何内容,因此将el
设置为空数组,因此您的事件将被绑定为任何内容……因此,将永远不会调用它们。
这是一个工作的jsFiddle: http : //jsfiddle.net/8jyeb/1/ 。 注意,您必须将所有JavaScript包装在jQuery DOM Ready处理程序中。 这将确保在HTML加载之前代码不会运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.