0

我正在编写一个使用图像映射的网页。图像和地图是动态加载的。如果我单击区域元素,则会加载新内容。url 也改变了它的哈希值(例如 index.php#somepage)。我有三层页面,主层(主页)有自己的图像和地图(index.php),第二层提供新图像+地图(index.php#somepage),第三层打开覆盖第二层,因此更改哈希(index.php#somepage_somesubpage)。

我现在希望能够向某人发送指向 index.php#somepage_somesubpage 的链接。所以我对hash进行切片,并在页面加载时触发第一级imagemap的click-method来加载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");
            }
        }
    }); 
});
4

1 回答 1

0

我解决了这样的问题:

$('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");
    }
}
于 2013-09-25T10:16:47.790 回答