每个选项卡的特定URL,无需在javascript中重新加载

每个选项卡的特定URL,无需在javascript中重新加载,javascript,jquery,html,Javascript,Jquery,Html,我有一个标签系统,我想能够去和url打开一个确定的标签。如www.site.com/tab2优先用于搜索引擎优化或www.site.com/tab2 我尝试过window.location或window.history.pushstate等方法,但我不知道如何使它们发挥作用。 Javascript: HTML: 阅读这篇文章,您应该能够理解: 您可以创建一个lil脚本,通过window.location.hash查看页面的哈希 因此,在文档就绪时,获取散列,然后模拟单击适当的选项卡。像这样的

我有一个标签系统,我想能够去和url打开一个确定的标签。如www.site.com/tab2优先用于搜索引擎优化或www.site.com/tab2

我尝试过window.location或window.history.pushstate等方法,但我不知道如何使它们发挥作用。 Javascript:

HTML:


阅读这篇文章,您应该能够理解:


您可以创建一个lil脚本,通过window.location.hash查看页面的哈希

因此,在文档就绪时,获取散列,然后模拟单击适当的选项卡。像这样的

var hash = window.location.hash;
var tab = parseInt(hash.replace('#',''), 10);
$tabsNavLis.eq(tab - 1).click();
但是,这只会像它那样工作,因为您的哈希表中有选项卡的索引。但是你可以看到,一旦你有了散列,你可以做什么。我希望这有帮助

编辑:

这就是它应该是什么样子…虽然我自己没有试过这个代码。如果你想让我再把它弄得乱七八糟的话,就把它放进垃圾桶里

(function($){
    $(function() {

        var $tabsNav = $('.tabs-nav'),
            $tabsNavLis = $tabsNav.children('li'),
            $tabContent = $('.tab-content');

        $tabContent.hide();
        $tabsNavLis.first().addClass('active').show();
        $tabContent.first().show();

        $tabsNavLis.on('click', function(e) {
            var $this = $(this);

            $tabsNavLis.removeClass('active');
            $this.addClass('active');
            $tabContent.hide();

        });

        var hash = window.location.hash;
        var tab = parseInt(hash.replace('#', ''), 10);
        $tabsNavLis.eq(tab - 1).click();

    });
})(jQuery);

我只是在变量$tabsNav=$'.tabs nav'、$tabsNavLis=$tabsNav.children'li'、$tabContent=$'.tab content'之后添加它?在单击处理程序之后添加它。并确保这些代码都在文档就绪的$function{//your code here}中运行;,或者在html的底部,就在结束正文标记之前。是的,它运行在一个文档中,准备好了,所以它就像现在在我的帖子上编辑的一样?是否必须删除e.preventDefault?这似乎删除了与我的代码无关的tabWell的内容。你需要把这件事弄清楚,否则真的很难帮上忙。
var hash = window.location.hash;
var tab = parseInt(hash.replace('#',''), 10);
$tabsNavLis.eq(tab - 1).click();
(function($){
    $(function() {

        var $tabsNav = $('.tabs-nav'),
            $tabsNavLis = $tabsNav.children('li'),
            $tabContent = $('.tab-content');

        $tabContent.hide();
        $tabsNavLis.first().addClass('active').show();
        $tabContent.first().show();

        $tabsNavLis.on('click', function(e) {
            var $this = $(this);

            $tabsNavLis.removeClass('active');
            $this.addClass('active');
            $tabContent.hide();

        });

        var hash = window.location.hash;
        var tab = parseInt(hash.replace('#', ''), 10);
        $tabsNavLis.eq(tab - 1).click();

    });
})(jQuery);