【问题标题】:Jquery Static Menu to Wordpress MenuJquery 静态菜单到 Wordpress 菜单
【发布时间】:2013-03-15 12:12:29
【问题描述】:

就在几天前,我得到了一个很棒的脚本,它基本上允许我的静态站点上的菜单项根据菜单中有多少列表项而缩小和扩大。现在,我已经开始着手将网站转换为 Wordpress 安装,但由于我不熟悉 Javascript,因此无法使其正常工作。

它不会运行脚本,只运行基本的 Wordpress PHP。

这是脚本

$(document).ready(function() {      
  li_count = $('#main-navigation li').length;
  div_size = $('#main-navigation').width();
  new_li_font_size = (div_size/10)/li_count+'px';
new_li_width = 100/li_count+'%';
  $('#main-navigation li').css('font-size', new_li_font_size);
  $('#main-navigation li').css('width', new_li_width);
  console.debug(new_li_size);
});

这是我的以前的导航

<nav id="main-navigation">
<ul>
    <li><a href="index.html">Hjem</a></li>
    <li><a href="butikker-single.html">Butikker</a></li>
    <li><a href="kampanjer.html">Kampanjer</a></li>
    <li><a href="#">Åpningstider</a></li>
    <li><a href="#">Om torvgårdens ting og tang</a></li>
</ul>
</nav><!-- END #main-navigation -->

这是我的当前导航

<nav id="main-navigation" role="navigation">
            <ul>
                <?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?>
            </ul>
        </nav><!-- END #main-navigation -->

我一直在查看脚本,我认为这可能与 php 中没有更多 li-tags 的事实有关,但考虑到我没有使用 jQuery 的经验,我可能错了。有人能帮我吗? :)

以防万一,这是我脑海中的 jQuery 实现:

<?php wp_enqueue_script("jquery"); ?>
    <?php wp_head(); ?>
    <script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/menu.js"></script>

迈克尔

【问题讨论】:

  • 为什么不保持父包装器的宽度auto,没有任何固定宽度?
  • @SheikHeera,我认为如果我这样做,字体大小也不会改变。在某些时候,如果菜单项太多,栏会与设置的宽度重叠,对吧?
  • 你想做什么?
  • 我希望能够将此脚本用于菜单栏,仅此而已。但它似乎不再注册了。
  • 您想通过 WordPress 挂钩添加/注册脚本以用于ready 事件吗?

标签: php javascript jquery wordpress menu


【解决方案1】:

要在WordPress 中添加脚本,您可以在functions.php 文件中使用wp_enqueue_script

function load_menu_js() {
    wp_enqueue_script(
        'menu_js',
        get_template_directory_uri() . '/js/menu.js',
        array('jquery')
    );
}
add_action('wp_enqueue_scripts', 'load_menu_js');

以上代码将在您的页面头部添加script,您无需使用&lt;script&gt;手动添加您的menu.js标签,这是推荐的方式。

你也应该使用

(function ($) {
    $(document).ready(function() {      
        // code goes here
    });
})(jQuery);

删除您用于加载menu.js 文件的wp_head() 之后的脚本标签,并更改以下代码

<nav id="main-navigation" role="navigation">
        <ul>
            <?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?>
        </ul>
</nav>

to(wp_nav_menu() 生成一个填充有li 标签的ul

<nav id="main-navigation" role="navigation">
    <?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?>
</nav>

还要记住navhtml5 标签,旧版浏览器不支持,您可以使用&lt;div id="main-navigation"&gt;&lt;/div&gt; 代替。

【讨论】:

  • 我应该在哪里使用 '(function ($) {' ?哦,我应该在原始脚本中更改它?我试试看,这看起来很棒:)
猜你喜欢
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多