addLBEvent : function()
{
var amount = this.imageList.length;
for(var i = 0;i < amount;i++)
{
if(this.imageList[i].addEventListener)
{
this.imageList[i].addEventListener("click",this.startLB,false);
}
/*
IE<9-part
*/
}
},
startLB : function(src)
{
}
我想知道哪个元素触发了事件。
如果我在HTML代码中执行此操作,我会编写类似onlick="startLB(this.src)"
的内容。我怎么能用addEventListener
做这样的事情?
我已经尝试过`addEventListener(“click”,“myobjectname.startLB(this.src)”但它没有用。
抱歉我的英语不好
答案 0 :(得分:4)
事件object
作为任何事件处理程序的第一个参数传入。
事件对象为target
属性,用于标识事件适用的元素。
addLBEvent : function(event) {
console.log(event.target);
}
答案 1 :(得分:2)
您可以访问对触发事件的元素的引用...
var elementThatTriggeredEvent = e.target || e.srcElement;
...假设e
是对事件的引用。
答案 2 :(得分:0)
如果您想知道点击了哪个元素,请使用event.target
。
如果您想知道您拥有处理程序的元素,请使用this
。 addEventListener
将调用您的处理程序,并将this
设置为您调用addEventListener
的元素。
注意区别。例如,如果你有这个标记:
<div id="foo"><span id="bar">Hi there</span></div>
...而且这段代码:
document.getElementById("foo").addEventListener('click', function(event) {
alert(this.id);
alert(event.target.id)
}, false);
...然后,如果用户点击“你好”,this
将是div
,event.target
将是span
。
了解this
是如何挂钩事件的元素,event.target
是它触发的元素(然后它会冒泡到div
)。
请注意,旧版IE不提供addEventListener
;你必须使用attachEvent
代替。 attachEvent
不确保将this
设置为您挂接它的元素,因此请注意API之间的差异。为了解决这样的问题,您可以选择任何体面的库,例如jQuery,YUI,Closure或any of several others。
答案 3 :(得分:0)
我认为你最好这样绑定它:
var that = this;
this.imageList[i].addEventListener("click",function() {
that.startLB(this.src);
},false);
this
将成为事件目标,因此我们必须以某种方式访问该对象,我将其命名为that
答案 4 :(得分:0)
使用此:
startLB : function(src)
{
var element = src.target.tagName;
alert("element >> "+element);
}
答案 5 :(得分:0)
试试这个......
addLBEvent : function(e)
{
if (!e) e = event;
e = e.srcElement || e.target;
.......
}