1
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)
    {


    }

どの要素がイベントをトリガーしたか知りたいのですが。onlick="startLB(this.src)"これをHTMLコードで行うとしたら、たとえば次のように記述します。どうすればそのようなことができaddEventListenerますか?すでに`addEventListener(" click "、" myobjectname.startLB(this.src) "を試しましたが、機能しませんでした。

そして私の悪い英語でごめんなさい

4

6 に答える 6

4

イベントobjectは、イベントハンドラーの最初の引数として渡されます。

targetイベントが適用される要素を識別するプロパティとしてのイベントオブジェクト。

addLBEvent : function(event) {
    console.log(event.target);
}

https://developer.mozilla.org/en/DOM/event.target

于 2012-05-18T07:53:27.300 に答える
2

イベントをトリガーした要素への参照にアクセスできます...

var elementThatTriggeredEvent = e.target || e.srcElement;

e...それがイベントへの参照であると仮定します。

于 2012-05-18T07:53:15.637 に答える
0

クリックされた要素を知りたい場合は、を使用してevent.targetください。

ハンドラーがどの要素にあるかを知りたい場合は、を使用するevent.currentTargetか、ほとんどの場合、を使用しthisます。呼び出した要素に設定されたaddEventListenerハンドラーを呼び出します。thisaddEventListener

違いに注意してください。たとえば、このマークアップがある場合:

<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)を確認してください。


addEventListener古いバージョンのIEでは使用できないことに注意してください。attachEvent代わりに使用する必要があります。フックした要素に設定されていることを確認attachEvent できないthisため、API間の違いに注意してください。そのようなことをスムーズにするために、 jQueryYUIClosure、または他のいくつかのライブラリなど、適切なライブラリを探すことができます。

于 2012-05-18T07:56:35.697 に答える
0

次のようにバインドするのが最善だと思います。

var that = this;
this.imageList[i].addEventListener("click",function() {
    that.startLB(this.src);
},false);

thisイベントのターゲットになるので、なんとかしてオブジェクトにアクセスする必要があります。that

于 2012-05-18T07:58:18.020 に答える
0

これを使って:

startLB : function(src)
    {
       var element = src.target.tagName;
       alert("element >> "+element);
    }   
于 2012-05-18T08:00:05.317 に答える
0

これを試して...

addLBEvent : function(e)
{
    if (!e) e = event;
    e = e.srcElement || e.target;
    .......
}
于 2012-05-18T08:01:06.187 に答える