Я создал интерактивную карту Лондона, используя тег <map>
, в котором определены 15 тегов <area>
. При нажатии на любую из 15 областей источник карты заменяется другим, в соответствии с областью, по которой был сделан щелчок. Все области имеют индивидуальный идентификатор, и источник меняется в соответствии с этим идентификатором.
Повторный щелчок по области возвращает изображение карты к исходному источнику.
Упрощенный HTML для этого выглядит примерно так:
<IMG id="londonmap" SRC="images/londonmap.png" USEMAP="#london">
<map name="london">
<area id="dalston" href="#" shape="rect" coords="364,75,500,200"
alt="Dalston Tube Stop" title="Dalston Area">
</map>
jQuery, который я использовал для нажатия и отмены щелчка, выглядит следующим образом:
$(document).ready(function()
{
$('#dalston').click(function()
{
// select the image and determine what the next src will be
var londonMap = $('#londonmap');
var newImageSrc = londonMap.attr('src') != 'images/dalstonmap.png' ? 'images/dalstonmap.png' : 'images/londonmap.png';
// re-bind the src attribute
londonMap.attr('src', newImageSrc);
});
});
Все до сих пор работает просто отлично. Теперь я подумал, что было бы неплохо, для небольшого дополнительного эффекта иметь изменяющиеся изображения .fadeToggle()
при нажатии для более плавного перехода и, таким образом, изменить код на это:
$(document).ready(function()
{
$('#dalston').click(function() {
$('#londonmap').fadeToggle('slow', function()
{
// select the image and determine what the next src will be
var londonMap = $('#londonmap');
var newImageSrc = londonMap.attr('src') != 'images/dalstonmap.png' ? 'images/dalstonmap.png' : 'images/londonmap.png';
// re-bind the src attribute
londonMap.attr('src', newImageSrc);
});
});
});
Проблема теперь в том, что только половина кода реагирует так, как я ожидал — исходное изображение исчезает, но второе никогда не занимает его место. Я предполагаю, что это как-то связано с порядком, в котором происходят события, но, будучи немного нубом в jQuery, я не могу сказать, что происходит не так.
Любая помощь будет очень признательна, так как это последнее, что мешает мне закончить карту!