私はstackoverflowで多くの答えを見て間違った答えを出しました。少なくとも私はそれを明確にしたかったのです。 以前の質問:typescriptで$(this)をイベントハンドラで使用する。答えのほとんどは使用についてでしたevent.target
第1の問題は、event.target
(ほとんどの回答がスタックオーバーフローであること)です。私はIEの特定の条件についてもチェックする必要があります(jqueryが少なくともそれを知っている前の日を覚えている人)。
第2の問題は伝播です。 letが、私はこの
<a href="#"><i class="fa fa-open"><span>something is here</span></i></a>
のようないくつかの要素を持っていると私はこのようなa
にクリックイベントを作成したと言う:
$("a").click((evt)=>{
evt = evt || window.event;
var target = evt.target || evt.srcElement;
console.log($(target));
});
十分なパディングとマージンが適切クリックすると、この要素の周りに存在する場合、私は得ることができます3つの要素のいずれかのターゲットa
,i
,span
ここで頭痛が始まり、次にクリックしたものを確認する必要があります。a
またはspan
、さらにはi
$(this)にアクセスするには不要な冗長コードを持ってくるまでに時間がかかることがあります。 $(これ)の美しさは、私が聞いていたアイテムを返す、クロスブラウザです!
私の場合、$(これ)は常にa
を参照し、他の子要素は参照しません。だから私は、例えば私がi
にアクセスしたいと思っているのを知っています。私は子要素で検索する必要があります。しかし、Typescriptが私にイベントを使用させる方法では、私はDOMのどこにいるかを調べる必要があります(ターゲットはspan
またはa
またはi
です)、ツリーに登るか下ろすか、現在の要素
もっと良い方法があるはずです。それで問題は何ですか?
、IE 6〜8 event.currentTargetをサポートしていません。他の解決策? はい、私はそれをサポートする必要があります、銀行や官公庁のほとんどはまだあなたがHSBC銀行に合格した次回IE8を使用しているカウンタに行って、IEのバージョン –
を尋ねます。 jqueryイベントハンドラのtypescriptで(これは)これは?実行時にjavascriptとまったく同じように動作するはずです。私たちが調べるかもしれないタイプエラーを得るかもしれません。 – AlexG
私はインスタンスメソッドを使用していました。私はそれを通常の関数に変更し、今は正常に動作します、私は上のスコープからクラス参照を運びます。私の答えを見てください –