2011-01-27 5 views
0

У меня возникла очень простая проблема. Мой код не работает, потому что он не распознает div, который вызывает jQuery.JQuery: невозможно получить идентификатор div

Я пытаюсь предупредить его с 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

+1

Вы включили много нерелевантного кода. Пожалуйста, сравните его с кодом, который действительно необходим для воспроизведения проблемы. (Анимация непрозрачности элементов, например, не связана, верно?) – Phrogz

ответ

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

Вы назначаете обработчик щелчка к элементу с идентификатором eurafrica; конечно, элемент, который прошел, никогда не будет иметь идентификатор 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

Try:

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

this.id намного короче! Что это такое .getValue()? – ScottE

+2

объект jquery даже не имеет метода getValue – Andy

0

почему ты даже нужна переменная ID-check, если вы нажмете на элемент с фиксированным идентификатором «eurafrica»?

+0

Я просто пытаюсь предупредить различные элементы, чтобы определить, почему код не выполняется должным образом. – sehummel

Смежные вопросы