jQuery Ui ウィジェット ファクトリのイベント処理を理解するのに少し問題があります。
この抜粋を参照してください:
$(function () {
$.widget("custom.superduper", {
_create: function () {
this._on($(this.element, "a"), {
click: function (event) {
console.log($(event.target));
}
});
}
});
$("#gallery").superduper();
});
この HTML で実行:
<ul id="gallery">
<li><a href="#"><img src="http://www.placehold.it/50x50" /></a></li>
<li><a href="#"><img src="http://www.placehold.it/50x50" /></a></li>
<li><a href="#"><img src="http://www.placehold.it/50x50" /></a></li>
</ul>
実際のデモ: http://jsfiddle.net/ech2htrt/2/
ギャラリー内の画像をクリックすると、コンソール出力は次のようになります。
オブジェクト[img 50x50]
<a>
ギャラリー内の要素だと思っていました。もちろん、closest()
またはparent()
を使用して目的の要素を取得することもできますが、それはかなり不自然に感じます。イベント ハンドラーの定義のどこで間違っていましたか?
イベント トリガー要素を取得するより良い方法はありますか? 私が使用するとき、this
または$(this)
参照は常にウィジェット要素です。