主干点击事件属性
我在这里使用了backbone.js“click
”事件。 onClick 事件,我想选择单击的 HTML 元素,将其删除并添加到添加的列表中。
我无法访问我单击的所有 HTML dom 元素。获取 HTML 元素后。
如果我点击“中国”,下面的代码将提醒“
那么,如何访问所有 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容器,add和added,如果我单击源中的元素,它应该转移到目标容器中。
I've used backbone.js 'click
' event here. onClick event, I want to select the clicked HTML element,remove it and add into added list.
I am not able to access all HTML dom element where I have clicked. After getting HTML element.
If I click 'China', The below code would alert '<li>China</li>
'.
So, How do I access all dom properties ?
Java Script code:
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();
and HTML code as below:
<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>
There are two ul containers, add and added, If I click the element from source, it should be shifted into target container.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您只想使用appendTo - 这将删除它并将其放入您的#added UL
You just want to use appendTo - this will remove it and put it into your #added UL
我尝试用 Backbone 0.9.1 自己运行它,一切正常。确保您
在 HTML 呈现之后添加。否则,您将在
$("#container")
实际存在于 DOM 中之前指定它。如果你这样做,jQuery 将不会返回任何内容,因此将el
设置为空数组,因此你的事件将不会绑定到任何内容......因此它们永远不会被调用。这是一个可以正常工作的 jsFiddle: http://jsfiddle.net/8jyeb/1/ 。请注意,您必须将所有 JavaScript 包装在 jQuery DOM Ready 处理程序中。这将确保在 HTML 加载之前代码不会运行。
I tried running it myself with Backbone 0.9.1, and everything worked fine. Make sure you're including
after your HTML is rendered. Otherwise, you're specifying
$("#container")
before it actually exists in the DOM. If you do that, jQuery will return nothing therefore settingel
to an empty array, so your events are will be bound to nothing... Therefore they'd never be called.Here is a jsFiddle with it working: http://jsfiddle.net/8jyeb/1/ . Notice that you have to wrap all of the JavaScript in a jQuery DOM Ready handler. This will ensure the code isn't run until the HTML has loaded.