2011-01-27 39 views
0

我有一個非常基本的問題。我的代碼無法正常工作,因爲它不能識別調用jQuery的div。jquery:無法獲得div的ID

我試圖用this.id$(this).attr('id')提醒它,點擊相關div時我沒有收到警報。但是當我點擊其他元素時,我確實會收到警報。這是我的HTML:

<div id="map"><img src="../../images/map2.jpg" /></div> 
    <div id="n_america" style="position:absolute;top:171px;"><img src="../../images/maps/north_america.jpg" /></div> 
    <div id="euro" style="position:absolute;top:171px;"><img src="../../images/maps/eurafrica.jpg" /></div> 
<div id="table-bottom" style="position:absolute; margin-top:-70px;"> 
    <div id="table-btm-title" style="width:255px;"><a id="north_america" href="#">North America and Latin America</a></div> 
    <div id="table-btm-title" style="width:147px;"><a id="eurafrica" href="#">Europe and Africa</a></div> 
    <div id="table-btm-title" style="width:230px; border:none;"><a id="asiapacific" href="#">Asia and South Pacific</a></div> 
</div> 

這裏是我的jQuery:

$(function(){ 
$('#n_america').css({ opacity: 0 }); 
$('#euro').css({ opacity: 0 }); 
$('#north_america').click(function() { 
    $('#map').animate({ opacity: 0}, 'slow'); 
    $('#n_america').animate({ opacity: 1 }, 'slow'); 
    $('#euro').animate({ opacity: 0 }, 'slow'); 
    $('#n_america').imagemap([ 
    /... 
    ]); 
    }); 

$('#eurafrica').click(function() { 
    $('#map').animate({ opacity: 0}, 'slow'); 
    $('#euro').animate({ opacity: 1 }, 'slow'); 
    $('#n_america').animate({ opacity: 0 }, 'slow'); 
    if (this.id == 'euro') { 
    $('#euro').imagemap([ 
    /... 
    ]); 
    } 

}); 

}); 

圖像映射插件罰款歐洲而不是北美洲的作品。北美昨天工作,直到我加入歐洲。但是評論歐洲圖片地圖並不能「重新激活」北美地區的代碼。有什麼想法嗎?

+0

你可以縮小你的例子嗎? 首先,你的HTML中沒有元素,id爲`eurafrica`,所以很難看到'click`事件是如何被觸發的。 – gpmcadam 2011-01-27 17:46:11

+1

你已經包含了很多不相關的代碼。請將其縮減爲只是實際需要重現問題的代碼。 (例如,動畫元素的不透明度是不相關的,對吧?) – Phrogz 2011-01-27 17:46:21

回答

6
$('#eurafrica').click(function() { 
    //... 
    if (this.id == 'euro') { 
    // This will never be true 

您與ID eurafrica元素分配click處理程序;當然傳入的元素永遠不會有一個euro的ID。

如果eurafrica(你不要在你的代碼包括)是所有這些元素的父元素,你既可以做:

$('#map, #n_america, #euro').click(function(){ 
    if (this.id=='euro'){ ... } 
}); 

或者:

$('#eurafrica').click(function(e){ 
    if (e.target.id=='euro'){ ... } 
}); 
-2

嘗試:

$(this).attr('id').getValue(); 
+2

this.id更短!這是什麼.getValue()所有關於? – ScottE 2011-01-27 17:49:45

+2

一個jQuery對象甚至沒有方法getValue – Andy 2011-01-27 18:00:02

0

爲什麼你連如果您點擊具有固定ID「eurafrica」的元素,需要變量ID檢查嗎?