javascript使用#link打开同一页面上的标签

时间:2014-08-21 23:10:58

标签: javascript jquery

我的javascript函数已经正常工作,以便当用户点击产品列表中显示的评论链接时,它会打开产品页面并直接进入页面的标签部分,评论为打开标签。

产品详情页面会有一个网址,例如www.mysite / thisproduct#reviews 产品页面评论部分以

开头
<li id="reviews">

我的javascript是

$(window).load(function() {
if(window.location.hash && $(window.location.hash).length > 0) {
    selected_tab = $(window.location.hash);
    selected_tab_num = selected_tab.attr('class');
    selected_tab_link = $('a', selected_tab)[0];
    expandcontent(selected_tab_num, selected_tab_link);
}
page_links = $('.review_page_links a');
if (page_links.length > 0) {
    var load_more_reviews = false;
    page_links.live('click', function(e){
        e.preventDefault();
        if (load_more_reviews) return false;
        review_page_url = $(this).attr('href');
        $('.reviews_content > div').css({'opacity':'0.5'});
        $.ajax({
            type: 'GET',
            url: review_page_url,
            cache: false,
            success: function(data){
                new_reviews = $('.reviews_content > div', data).hide();
                $('.reviews_content > div').fadeOut(100).remove();
                $('.reviews_content').append(new_reviews);
                $('.reviews_content > div').fadeIn(100);
            },
            complete: function(){
                load_more_reviews = false;
            }
        });
        load_more_reviews = true;
    });
}
});

我正在尝试使用相同的代码来处理相同页面情况,其中网址单击#review和评论标签位于同一页面上。 我对javascript一点也不好,但我假设问题是因为代码最初是为加载新页面编写的,而现在它是一个相同的页面事件。

我尝试将.load更改为.onclick,因为我认为可能会改变它的触发方式,但它没有任何区别。

我正在寻找有关如何使此功能在同一页面事件上工作而不是新页面加载的建议。

1 个答案:

答案 0 :(得分:2)

您正在寻找hashchange事件。

$(window).on("hashchange", function () {
   // inspect the hash and do your stuff
});