繁体   English   中英

javascript使用#链接在同一页面上打开标签页

[英]javascript to open a tab on same page using a # link

我有一个可以正常工作的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;
    });
}
});

我正在尝试使用相同的代码在同一页面上工作,其中url单击#review和reviews选项卡在同一页面上。 我对javascript一点都不满意,但我假设问题是因为代码最初是为加载新页面而编写的,而现在它是同一个页面事件。

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

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

您正在寻找hashchange事件。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM