2011-01-27 13 views
0

私は非常に基本的な問題があります。 jQueryを呼び出すdivを認識していないため、私のコードが動作しません。Jquery:divのIDを取得できません

私はthis.idまたは$(this).attr('id')と警告し、問題のdivをクリックすると警告が表示されません。しかし、他の要素をクリックすると警告が表示されます。ここ

<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([ 
    /... 
    ]); 
    } 

}); 

}); 

イメージマッププラグここに私のHTMLです。北米はヨーロッパを追加するまで昨日働いていた。しかし、ヨーロッパのイメージマップをコメントアウトしても、北米のコードは「再活性化」されません。何かご意見は?

+0

あなたの例を少し絞り込むことができますか? 最初に、あなたのHTMLにid 'eurafrica'を持つ要素がないので、' click'イベントがどのように起動されているか見るのは難しいです。 – gpmcadam

+1

多くの無関係なコードが含まれています。問題を再現するために実際に必要なコードだけを確認してください。例えば、要素の不透明度をアニメーション化するのは無関係ですよね?) – Phrogz

答えて

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

あなたはID eurafricaを持つ要素にクリックハンドラを割り当てています。もちろん、渡された要素のidはeuroになることはありません。

(あなたのコードに含まれていません)eurafricaは、これらすべての要素の親要素がある場合は、いずれかを実行できます。

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

または:

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

これを試してみます。それは有望だと思います。 – sehummel

+1

するかしない。 _try_はありません。 :) – Phrogz

-2

試してみてください。

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

this.idは非常に短いです!これは何ですか.getValue()はすべてについてですか? – ScottE

+2

jqueryオブジェクトにもgetValueメソッドがありません – Andy

0

を理由も、あなたを行います固定ID "eurafrica"の要素をクリックすると変数ID-checkが必要ですか?

+0

私は、コードが正しく実行されていない理由を判断するために、さまざまな要素を警告しようとしています。 – sehummel

関連する問題