Я пишу веб-страницу, которая использует карту изображения. Изображение и карта загружаются динамически. Если я нажму на элемент области, загрузится новый контент. Также url изменяет свой хэш (например, index.php # somepage). У меня есть три слоя страниц, у основного слоя (домашняя страница) есть собственное изображение с картой (index.php), второй слой предлагает новую картинку + map (index.php # somepage), а третий слой открывает оверлей второй слой, поэтому изменение хэша (index.php # somepage_somesubpage).
Теперь я хочу иметь возможность отправить кому-то ссылку на index.php # somepage_somesubpage. Поэтому я нарезаю хэш и запускаю метод click-imagemap на первом уровне для загрузки index.php # somepage при загрузке страницы. Я добавил обратный вызов на это, назвав желаемый клик-метод обновленной карты изображений. Это не работает по какой-то причине, я не могу понять. Я могу открыть index.php # somepage, но когда я ввожу index.php # somepage_somesubpage, я получаю тот же результат.
Вот код $ (document).ready:
var cont = $('#content');
$( document ).ready(function() {
cont.load('pages/home.php', function(responseTxt,statusTxt,xhr){
if(statusTxt=='error')
{
cont.load('404.php');
}
lineparser('#content'); //Perform some fancy stuff on the page
var hash = location.hash.replace('#', '');
if (hash != ''){
if(hash.indexOf('_') > 0)
{
//open page with content
$('area[href~="#' + hash.slice(0, hash.indexOf('_')) + '"]').first().trigger("click", function(){
$('area[href~="#' + hash + '"]').first().trigger("click");
});
}
else{
//open menu page
$('area[href~="#' + hash + '"]').first().trigger("click");
}
}
});
});
Я решил проблему следующим образом:
$('area[href~="#' + hash.slice(0, hash.indexOf('_')) + '"]').first().trigger("click", [hash]);
Затем я добавил следующее:
$(document.body).on('click', "map area", function(e, schachteln){
...
if(schachteln){
$('area[href~="#' + schachteln + '"]').first().trigger("click");
}
}