0

目前有这样的东西:

$anchor = window.location.hash.replace("#", "");

if ($anchor == 'Home'){
       --perform some actions--
}

虽然这有效......它仅在最初访问页面时有效。换句话说,如果我在 test.html 并手动将#Home 添加到浏览器中的 url,除非我刷新页面,否则不会发生任何事情。有没有办法做到这一点,所以它总是检查主题标签,而不仅仅是最初在页面加载时?我记得有一个 .live 或我曾经使用过的东西,它似乎做了类似于我正在寻找的东西。

编辑 :

var $zproductclick = jQuery.noConflict();
$zproductclick('a').live('click', function(event){ 

    if ((window.location.hash.replace("#", "")) == 'home'){
       $zproductclick(".homeproduct").add(".networkproduct").add(".parentalproduct").add(".allproduct").hide();
       $zproductclick(".homeproduct").add(".allproduct").fadeIn(1000);
       $zproductclick("#prodall").add("#prodnet").add("#prodparent").removeClass("active");
       $zproductclick("#prodhome").addClass("active");
       $zproductclick("#prodversion").removeClass("prodselectno").addClass("prodselect");
    }

})

为什么我必须单击两次才能执行操作?似乎它在单击后立即读取旧哈希而不是那个。

4

2 回答 2

0

只需在每个链接上添加事件。就这样。

$('a').on('click', function(event){ /* check hash tag here */ })

默认情况下,如果链接有哈希标签,如果它存在,它将转到该 id,如果不存在,它将转到页面顶部。因此,如果它匹配任何内容,请调用event.preventDefault();

于 2012-11-05T20:49:13.400 回答
0

为 IE编辑

工作示例

jQuery

var x = window.location.href;

    function checkhash(){
        x = window.location.href;
        $('#results').html(x); //Just to show the results, Delete in your code
        //Put your functions here....       
        window.setTimeout(checkhash, 1);
    }

checkhash();
于 2012-11-05T22:27:45.873 回答