1. ホーム
  2. javascript

[解決済み] onclick呼び出しオブジェクトを取得するには?

2023-05-30 19:41:29

質問

の呼び出しオブジェクトにハンドラを持たせる必要があります。 onclick イベントの呼び出しオブジェクトにハンドラを持たせる必要があります。

<a href="123.com" onclick="click123(event);">link</a>

<script>
  function click123(event) {
    //i need <a> so i can manipulate it with Jquery
  }
</script>

を使わずに行いたいのですが $().click または $().live というように、jQueryの機能を利用しながらも、上記のような方法を用いています。

どのように解決するのですか?

で渡す this をインラインクリックハンドラで渡す

<a href="123.com" onclick="click123(this);">link</a>

または event.target を関数内で使用することも可能です(但し W3C DOM Level 2 イベントモデル )

function click123(event)
{
    var a = event.target;
}

しかし、もちろん IEは異なる であるため、これを処理するバニラJavaScriptの方法は

function doSomething(e) {
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
}

またはあまり冗長でない

function doSomething(e) {

    e = e || window.event;
    var targ = e.target || e.srcElement || e;
    if (targ.nodeType == 3) targ = targ.parentNode; // defeat Safari bug
}

ここで eevent object で、IE 以外のブラウザではこの関数に渡されます。

しかしjQueryを使っているのであれば、控えめなJavaScriptを強く推奨し、イベントハンドラを要素にバインドするためにjQueryを使用することになるでしょう。