在URL中使用hashtag来执行操作?

时间:2012-11-05 20:13:08

标签: jquery tags

目前有这样的事情:

$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");
    }

})

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

2 个答案:

答案 0 :(得分:0)

只需在每个链接上添加活动即可。就这样。

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

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

答案 1 :(得分:0)

已编辑对于IE

Working Example

<强> 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();