2011-05-05 48 views
5

我需要從內部的模糊事件中檢索導致聚焦(模糊)事件的DOM元素。下面的代碼會給我失去焦點的元素的ID,而不是導致元素失去焦點的元素。這是我需要的第二個元素。確定點擊的最後一項

.live('blur', function(e) { 
    var id = $(this).attr('id'); 
} 

如何獲取導致模糊的元素,而不是模糊所附的元素?我能想到的唯一方法是捕獲window.click事件,然後處理我需要的邏輯,但這會變得棘手,所以我希望有一種方法可以從blur事件中獲取DOM元素。

+2

http://stackoverflow.com/questions/121499/when-onblur-occurs-how-can-i-find-out-which-element-focus-went-to – 2011-05-05 23:01:40

+0

你能給我們提供更多關於你的信息嗎一旦你有導致模糊的元素,試圖達到目的?可能有其他方法可以解決問題 – 2011-05-05 23:09:03

+0

我需要確保某些操作是基於單擊或未單擊的內容而發生的 - 即:某些元素需要顯示或隱藏。問題是這個代碼是我厭惡混淆的遺留代碼。我可以通過處理窗口點擊並將所有的邏輯放在那裏來解決這個問題,但是這需要完全去掉我非常想避免的代碼庫的其餘部分。除非我有一些方法可以讓我從模糊事件本身中可靠地獲取觸發元素,否則我別無選擇。 – AlexGad 2011-05-05 23:30:58

回答

4

運行此

$(document).click(function(e) { 
    e = e || event; 
    $.lastClicked = e.target || e.srcElement; 
}); 

那麼你可以通過

var lastClickedElement = $.lastClicked; 
// ... 
+1

問題在於,雖然我可能是錯的,但事件被觸發時並不能保證。如果我嘗試從模糊事件中點擊文檔中設置的值,那麼是否有一點小概率可能尚未填充? – AlexGad 2011-05-05 23:11:47

16

得到它的任何地方使用此:

$(document).click(function(event) { 
    window.lastElementClicked = event.target; 
}); 

乾杯

+1

對不起,我的意思是補充說我需要從模糊處理程序中可靠地檢索元素。如果我設置上述,然後嘗試使用代碼:alert($(window.lastElementClicked).attr(「id」));從模糊事件中,我得到了模糊附加到的元素的ID。 – AlexGad 2011-05-05 23:25:45

1
$(document).click(function(event) { 
    var selected_name = event.target.name; 
    var selected_id = event.target.id; 
    var selected_value = event.target.value; 
    // etc. 
}); 

只是建立和澄清他人的帖子。