【问题标题】:how to differentiate between top nav menu and body nav menu in wordpress如何区分wordpress中的顶部导航菜单和正文导航菜单
【发布时间】:2013-11-20 19:58:00
【问题描述】:

我目前正在使用wp_nav_menu 在顶部和正文中生成我的导航菜单。在header.php中,我用过

        <?php if(has_nav_menu('body-nav')) {
                wp_nav_menu(array('theme_location' => 'top-nav', 'items_wrap' => '<select class="mobile-menu">%3$s', 'container' => '', 'menu_class' => 'mobile-menu', 'sort_column' => 'menu_order', 'fallback_cb' => 'null'));
} else {
                wp_nav_menu(array('theme_location' => 'top-nav', 'items_wrap' => '<select class="mobile-menu">%3$s</select>', 'container' => '', 'menu_class' => 'mobile-menu', 'sort_column' => 'menu_order', 'fallback_cb' => 'null'));       
} ?>

<?php if(has_nav_menu('top-nav')) {
                wp_nav_menu(array('theme_location' => 'top-nav', 'items_wrap' => '%3$s</select>', 'container' => '', 'menu_class' => 'mobile-menu', 'sort_column' => 'menu_order', 'fallback_cb' => 'null'));
} else {
                wp_nav_menu(array('theme_location' => 'top-nav', 'items_wrap' => '<select class="mobile-menu">%3$s</select>', 'container' => '', 'menu_class' => 'mobile-menu', 'sort_column' => 'menu_order', 'fallback_cb' => 'null'));           
}?>

它可以正常工作并且显示良好,但是当浏览器 (Firefox) 处于还原状态或处于较小位置时,两个菜单会变成/组合在一个下拉框中。当浏览器处于恢复位置时,我需要区分顶部和正文导航菜单。即需要显示顶部菜单栏的顶部菜单以及全屏和浏览器恢复/小位置显示正文菜单栏的正文菜单。我已经尝试了很多。没有解决办法。当我尝试放置下拉框时,它还与顶部菜单和正文菜单相结合。如何区分此类问题。请参阅this site 恢复向下/小位置。有人知道这类问题吗?

【问题讨论】:

    标签: javascript jquery wordpress responsive-design nav


    【解决方案1】:

    这个“问题”是由你的主题引起的。 更具体地说,custom.js 位于http://letsassistblog.com/wp-content/themes/thegossip/lib/scripts/custom.js(和媒体查询)

    第 16 行

    /////////////////////////////////////// Mobile Navigation Menu ///////////////////////////////////////
    jQuery("<option />", {"selected": "selected", "value": "", "text": navigationText}).prependTo(".nav select");
    jQuery(".nav .menu a").each(function() {
    var el = jQuery(this);
    var padding = "";
    for (var i = 0; i < el.parentsUntil('div > ul').length - 1; i++)
    padding += "-";
    jQuery("<option />", {
    "value" : el.attr("href"),
    "text" : padding + el.text()
    }).appendTo(".nav select");
    });
    jQuery(".nav select").change(function() {
    window.location = jQuery(this).find("option:selected").val();
    }); 
    

    现在,我用引号写了“问题”,因为这实际上是一个(非常)理想的功能,称为“Responsive Design”或RWD。它会调整您的菜单,以便在移动设备上轻松查看..

    现在 - 关于您网站上的一些实际问题 - 我很惊讶它有效。 你是 jQuery 3 次......和它的 2 个不同版本。

    我会查看代码并对脚本加载进行一些更正...

    编辑我 - 从你的评论中不清楚你想做什么 - 但我已经在生成菜单的代码上方向你展示了。这一行:

    jQuery(".nav .menu a").each(function()
    

    正在使用.nav 中的所有.menua 元素并转向选项选择。

    由于您的 body-navtop-nav id 都共享相同的 .nav 类 - 该脚本适用于两者。

    如果您只希望 ONE 受到影响 - 更改该行中的选择器。 例如

     jQuery("#top-nav .menu a").each(function() // or body-nav
    

     jQuery("#top-nav .nav .menu a").each(function()// or body-nav
    

    如果您想完全禁用两者 - 只需将其删除或注释掉即可。

    关于你对jQuery的评论- 您的站点从 3 个不同的来源和 2 个版本加载 3 个不同的库。 jQuery 应该只加载一次以避免冲突并且没有理由加载 3 次(除了极端的兼容性问题)。

    它不是多次使用的同一个库 - 在 jQuery 中没有意义(或任何库 - 这是库的全部意义..)。

    【讨论】:

    • 是的,同一个 Jquery 库被多次使用。对于这种类型的问题,我稍后会看这个作业。但是在这一刻,我需要在这个设计中很快在顶部导航和移动/响应位置的主体导航中设置菜单。我使用@media only screen and (max-width: 100px) 和移动菜单来解决这个问题显示内联块以及全屏,菜单显示无。但这里不是正确的解决方案。它在 SEO 中出现了问题。为此,我正在寻找另一种解决方案,例如如何在此设计中以全屏和移动设备显示顶部导航菜单和正文导航菜单。
    • 1 - 我已经向您展示了发生这种情况的位置 .. 如果您不明白,请阅读我的更新 .. 2 - 您是 loading jQuery 3 次,并且有 3 个不同的版本。这与多次使用的 jQuery 库不同。它与使用的 jQuery 不同。而且 - 无论你如何使用它,Jquery 都只需要加载一次。
    • 我希望不仅一个受到影响,我希望两个都受到影响。在 custom.js 中,我使用 jQuery("#top-nav .menu a").each(function() for top nav menu 而 jQuery2("#top-nav .menu a").each(function() for正文导航菜单显示顶部栏菜单以及正文导航菜单。
    • @user2995268 - 对不起。我确信在你的脑海中你知道你想要什么 - 但你的 cmets(和 OP)对我来说真的不清楚。你能描述一下你想做什么吗??如果您不想要这种行为 - 只需禁用它! .
    • 好的,我描述得很完整。现在全屏显示顶部导航菜单(主页,关于,..)和正文导航菜单(主页,社交资料,...)很好地显示。好的。当浏览器处于响应位置/恢复位置时,会显示顶部导航菜单和正文导航菜单的菜单选择框/组合框,而不是显示两个菜单的 ul li,并且它还将两个菜单栏组合在一个选择框中.但是我需要在顶部导航中显示顶部导航菜单,还需要在 ul li 的正文中显示正文导航菜单或在响应位置/浏览器恢复位置选择框。你明白我需要什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多