Javascript 主干单击事件属性
我在这里使用了backbone.js“Javascript 主干单击事件属性,javascript,backbone.js,backbone-events,Javascript,Backbone.js,Backbone Events,我在这里使用了backbone.js“单击”事件。onClick事件,我想选择单击的HTML元素,删除它并添加到添加的列表中 我无法访问我单击的所有HTML dom元素。获取HTML元素后 如果我单击“中国”,下面的代码将提示“中国” 那么,如何访问所有dom属性 Java脚本代码: var ActionBox = Backbone.View.extend({ el:$("#container"), events: { "c
单击”事件。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();
var ActionBox=Backbone.View.extend({
el:$(“集装箱”),
活动:{
“单击#添加li”:“添加项”,
“单击#警报”:“警报此处”
},
初始化:函数(){
_.bindAll(本“增补”、“呈现”);
这个。render();
},
render:function(){
这是一个;
},
附加项:功能(ev){
var ac=$(ev.target.html();//单击我们之后,它不会给我“US ”
警报(ac);
},
prepareActions:function(){
var str=“”;
对于(var i=0;i我尝试自己用主干0.9.1运行它,一切正常。确保包括
var ActionBox = Backbone.View.extend({
el:$("#container"),
...
});
在呈现HTML之后。否则,在它实际存在于DOM中之前指定$(“#容器”)
。如果这样做,jQuery将不返回任何内容,因此将el
设置为空数组,因此您的事件将不绑定任何内容…因此永远不会调用它们
下面是一个JSFIDLE,它可以正常工作:。请注意,您必须将所有JavaScript包装在一个jQuery DOM就绪处理程序中。这将确保在加载HTML之前不会运行代码。我尝试使用主干0.9.1运行它,一切正常。请确保包括
var ActionBox = Backbone.View.extend({
el:$("#container"),
...
});
在呈现HTML之后。否则,在它实际存在于DOM中之前指定$(“#容器”)
。如果这样做,jQuery将不返回任何内容,因此将el
设置为空数组,因此您的事件将不绑定任何内容…因此永远不会调用它们
下面是一个JSFIDLE,它可以工作:。注意,您必须将所有JavaScript包装在一个jQuery DOM就绪处理程序中。这将确保在加载HTML之前不会运行代码。您只需要使用appendTo-这将删除它并将其放入您的#添加的UL中
您只需要使用appendTo-这将删除它并将其放入您的#添加的UL中
你得到了什么警报?如果你点击US
,它会说US
(不是US
)。你自己试试JSFIDLE。例如,谢谢,我想要as$(ev.target).html()的警报asUS 。啊,我不知道这是问题所在。我以为它根本没有返回任何东西。我的错误。你得到了什么警报?如果你点击US
,它会说US
(不是US
)。你自己试试JSFIDLE。例如,谢谢,我想要as$(ev.target).html()的警报作为US 。啊,我不知道这是问题所在。我以为它根本没有返回任何东西。我的错误。酷..+1。它解决了问题。但是,你能告诉我,为什么jquery的.html()不能在那里操作吗?这意味着,$(ev.target)没有给我实际的DOM元素..html()提供元素中的内容,.get(0)给您元素本身。如果有多个元素,请使用get(1),get(2)gr8.$($(ev.target).get(0)).html()给我带来了我想知道的:)一个更好的方法是执行alert($(ev.target).get(0).outerHTML;-这将返回第一个itemcool..+1的完整html值。它解决了问题。但是,您能告诉我,为什么是.html()jquery的一部分不能在那里操作?这意味着,$(ev.target)没有给我实际的DOM元素..html()给你元素内部的内容,.get(0)给你元素本身。如果有超过1个元素,使用get(1),get(2)gr8。$($(ev.target.get(0)).html()给我我想知道的:)更好的方法是执行警报($(ev.target.get(0.outerHTML);-返回第一项的完整HTML值
$(ev.target).appendTo('#added');