2011-10-04 58 views
0

我想要獲取用戶在頁面上點擊時頁面上元素的id。這裏有幾個帖子顯示使用'this'的作品,但是我的代碼不適用'this'。返回的ID是未定義的。但我使用'事件'技術,它的工作原理。jquery使用'this'點擊頁面時獲取元素id不起作用

有人可以解釋不同之處嗎?

$(function(){ 

//document or 'body' tags both don't work 

$('body').click(function(){ 

    //var id = event.target.id; 
    var id=$(this).attr('id'); 
    alert (id); 
//returned undefined 


}); 

     }); 

此代碼的工作

$(function(){ 

$('body').click(function(event){ 

    var id = event.target.id; 
    //var id=$(this).attr('id'); 
    alert (id); 



});}); 
+0

主體的元素的ID,因爲*這個*將聽者附着到元件(身體),你可能沒有給它一個ID。事件目標是事件最初發生的元素,不一定是調用偵聽器的元素。 – RobG

回答

4

用下面的函數,變量id將參照body元素的id本身。

$('body').click(function() { 
    var id = $(this).attr('id'); 
    alert(id); // Will alert "undefined" if the <body> tag has no id 
}); 

使用類似下面實際上是一個不同的功能,你想要做什麼用event.target,這是實際的body元素內點擊的元素:

$('body').click(function(event) {  
    var id = event.target.id; 
    alert(id); // Will alert the id if the element has one  
}); 

因此,簡而言之:event.target是被點擊的元素,$(this)將參考<body>標籤。

+0

感謝shaz,但是使用$(document).click怎麼樣?它也不起作用。 – Jamex

+0

@Jamex它似乎對我很好,看看http://jsfiddle.net/YqTJZ/你想做什麼? – Shaz

+0

我正在嘗試獲取單擊的元素的ID。但我想這個'文檔'是指文檔本身而不是元​​素。我想我很難分開語法,因爲我剛開始使用jQuery。 – Jamex

0

第一個越來越主體元素的id而第二個是越來越在接收到點擊事件

+0

感謝griegs,爲什麼不$(文檔).click工作? – Jamex