开发者

Jquery: can't get ID of div

I'm having a very basic problem. My code isn't working because it isn't recognizing the div that's calling the jQuery.

I try to alert it with this.id or $(this).attr('id') and I get no alerts when clicking on the divs in question. But I do get alerts when I click on other elements. Here is my 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>开发者_JS百科
    <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>

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

 });

});

The image map plug in works fine for Europe but not for North America. North America was working yesterday until I added Europe. But commenting out the Europe image map doesn't "reactivate" the North America code. Any thoughts?


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

You are assigning a click handler to an element with id eurafrica; of course the element passed in will never have an id of euro.

If eurafrica (which you do not include in your code) is a parent element of all these elements, you could either do:

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

Or:

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


why do you even need the variable ID-check if you click on the element with the fixed id "eurafrica"?


Try:

$(this).attr('id').getValue();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜