2012-10-31 37 views
1

當我使用以下方法來註冊一個處理器click事件現場點擊事件點擊a標籤,我怎樣才能得到事件被註冊的jQuery對象?我期望li元素成爲事件目標,因爲這是我放入選擇器。我知道我可以在這種情況下使用.parent(),但是有沒有辦法獲得匹配選擇器的對象,而不是底部事件目標?也使用.parent()是一個痛苦,因爲當點擊li的其他部分時,我不需要使用它。錯誤event.target jQuery的

+2

您是否知道'.live()'已被棄用?你應該使用'.on()'(jQuery 1.7+)或'.delegate()'。 –

+0

謝謝,不知道它已經被棄用了。 – Philipp

回答

7

e.target是鏈接標記。

您應該使用this獲取li標籤,該標籤是綁定到處理程序的元素。

代碼:

$('.drilldown-action > li').live('click', function(event){ 
    drilldown.loadActions($(this)); 
}); 

注:在jQuery 1.7中,.live()方法已經過時了。使用.on()附加事件處理程序。舊版本jQuery的用戶應優先使用.delegate()而不是.live()

2

是的,使用this就像你會遇到任何其他事件一樣。

drilldown.loadActions($(this)); 
1

在這種情況下,我會確保我總是通過我想要的東西:

$('.drilldown-action > li').live('click', function(event){ 
    drilldown.loadActions($(event.target).closest('li')); 
}); 

據jQuery的API文檔,最接近()將始終通過 「禮」 元素:

描述:對於集合中的每個元素,獲取 通過測試匹配選擇器的第一個元素元素本身並通過它的祖先在DOM樹中遍歷 。 https://api.jquery.com/closest/