jquery 选项卡,根据 URL 可见

发布于 2024-09-18 01:11:58 字数 1332 浏览 2 评论 0原文

我使用基于 http://www.jquery 和选项卡。 sohtanaka.com/web-design/simple-tabs-w-css-jquery/

<script type="text/javascript">
    $(function() {
        $(".tab_content").hide(); //Hide all content
        $("ul.tabs li:first").addClass("active").show(); //Activate first tab
        $(".tab_content:first").show(); //Show first tab content

        //On Click Event
        $("ul#menu li").click(function() {
        $("ul#menu li").removeClass("active"); //Remove any "active" class
        $(this).addClass("active"); //Add "active" class to selected tab
        $(".tab_content").hide(); //Hide all tab content
        var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
        $(activeTab).fadeIn(); //Fade in the active content
        return false;
        });
    });
</script>

是否可以对此进行调整,以便根据 URL 中的值(page.html#tab4 等),相应的选项卡将展示?

我相信在当前状态下它不起作用,因为它返回 false,并且

var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content

正在寻找锚点值,而不是 URL。

希望这是有道理的。

我(认为)如果可以修复,我需要一种从 URL 以及基于单击的锚点获取 #tab 的方法。

谢谢

Am using jquery and tabs based on http://www.sohtanaka.com/web-design/simple-tabs-w-css-jquery/

<script type="text/javascript">
    $(function() {
        $(".tab_content").hide(); //Hide all content
        $("ul.tabs li:first").addClass("active").show(); //Activate first tab
        $(".tab_content:first").show(); //Show first tab content

        //On Click Event
        $("ul#menu li").click(function() {
        $("ul#menu li").removeClass("active"); //Remove any "active" class
        $(this).addClass("active"); //Add "active" class to selected tab
        $(".tab_content").hide(); //Hide all tab content
        var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
        $(activeTab).fadeIn(); //Fade in the active content
        return false;
        });
    });
</script>

Is it possible to adjust this so that depending on the value in the URL (page.html#tab4 etc), the corrosponding tab will show?

I believe in its current state it doesn't work because it returns false, and that

var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content

is looking for an anchor value, rather than the URL.

Hope this makes sense.

I (think) if a fix is possible, I need a way to get the #tab from the URL as well as based on the Anchor clicked.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

北凤男飞 2024-09-25 01:11:58

您可以使用 window.location.hash 检索 URL 的 #something 部分。请参阅:https://developer.mozilla.org/en/window.location


另外,您发布的代码...可能是在 jQuery 中要做的事情的一个很好的列表。让我们为您修复它:

$(function() {
    var tabContent = $(".tab_content");
    // Modified tutorial's code for this
    var tabs = $("#menu li");
    var hash = window.location.hash;

    tabContent.not(hash).hide();
    tabs.find('[href=' + hash + ']').addClass('active');

    tabs.click(function() {
        $(this).addClass('active').siblings().removeClass('active');
        tabContent.hide();
        var activeTab = $(this).find("a").attr("href");

        $(activeTab).fadeIn();
        return false;
    });
});

You can use window.location.hash to retrieve the #something part of the URL. See: https://developer.mozilla.org/en/window.location


Also, that code you posted... is probably a great list of what not to do in jQuery. Let's fix it for you:

$(function() {
    var tabContent = $(".tab_content");
    // Modified tutorial's code for this
    var tabs = $("#menu li");
    var hash = window.location.hash;

    tabContent.not(hash).hide();
    tabs.find('[href=' + hash + ']').addClass('active');

    tabs.click(function() {
        $(this).addClass('active').siblings().removeClass('active');
        tabContent.hide();
        var activeTab = $(this).find("a").attr("href");

        $(activeTab).fadeIn();
        return false;
    });
});
柠北森屋 2024-09-25 01:11:58

您想在页面加载时显示选项卡吗?

 $(function() {
      $("ul#menu li").removeClass("active"); //Remove any "active" class  
      $(".tab_content").hide(); //Hide all tab content  

      // set the active class on the tab where the href ends with #tabN
      $("ul#menu li a[href$='" + window.location.hash + "]").closest("li").addClass("active");
      // use the #tabN part of the url as the id selector to show the content
      $(window.location.hash).fadeIn();
 });

另外,在 onclick 处理程序中,您可能需要替换该行

    var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content 

    var activeTab = $(this).find("a")[0].hash; //Find the rel attribute value to identify the active tab + content 

获取 href 的 #tabN 部分。

Do you want to display the tab on load of the page?

 $(function() {
      $("ul#menu li").removeClass("active"); //Remove any "active" class  
      $(".tab_content").hide(); //Hide all tab content  

      // set the active class on the tab where the href ends with #tabN
      $("ul#menu li a[href$='" + window.location.hash + "]").closest("li").addClass("active");
      // use the #tabN part of the url as the id selector to show the content
      $(window.location.hash).fadeIn();
 });

Also, in your onclick handler, you probably want to replace the line

    var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content 

with

    var activeTab = $(this).find("a")[0].hash; //Find the rel attribute value to identify the active tab + content 

to get the #tabN part of the href.

尹雨沫 2024-09-25 01:11:58

是的,尝试:

$('a[href="'+activeTab'"]').fadeIn();

yes try:

$('a[href="'+activeTab'"]').fadeIn();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文