我在stackoverflow中看到很多回答錯誤的答案,我想至少爲自己弄清楚。 老問題:在事件處理程序中使用$(this)和typescript。大部分答案都是關於使用的event.target
第一個問題是它不僅是event.target
(堆棧溢出中的大部分答案)。我也需要檢查IE的具體條款(任何記得jQuery之前至少知道這一點的人)。
第二個問題是傳播。 讓說我有這樣的
<a href="#"><i class="fa fa-open"><span>something is here</span></i></a>
一些元素和我a
這樣創造了一個click事件:
$("a").click((evt)=>{
evt = evt || window.event;
var target = evt.target || evt.srcElement;
console.log($(target));
});
如果有足夠的空白和邊距周圍的正確點擊這個元素,我可以得到目標爲三種元素之一a
,i
,span
現在頭痛會開始,那麼我需要檢查點擊的是什麼,是不是a
或span
甚至i
它會帶來不必要的冗餘代碼,如果我可以訪問$(this)。 $(this)的美是它正在返回我正在聽的項目,跨瀏覽器!
在我的情況下$(this)總是引用a
而不是其他任何子元素。所以我知道例如,如果我想訪問i
我需要搜索子元素。但在Typescript讓我使用的事件中,我需要檢查我在DOM中的位置(目標是span
或a
或i
!!!),然後我決定在樹中爬升或下降,或者進行更改當前元素。
我知道應該有更好的辦法。所以問題是什麼?
作爲鏈接你連接,IE 6至8不支持event.currentTarget。其他解決方案? 是的,我需要支持它,大多數銀行和政府機構仍在使用IE8,下次您通過匯豐銀行時,請到櫃檯並詢問IE版本 –
好的,當您撥打$ (這)在打字稿中的jQuery事件處理程序?它應該在運行時與JavaScript完全相同;但是你可能會遇到一個我們可能會看到的類型錯誤。 – AlexG
我正在使用實例方法。我把它改爲正常的函數,現在它工作正常,我從上範圍進行類引用。請看我的答案 –