无法让jQuery Nav在WordPress中工作



我正在使用jQuery为我的网站创建一个移动导航,以隐藏/显示子链接。下面是导航的工作示例:http://codepen.io/johnmotyljr/pen/HGADn

但是,当我将javascript放入WordPress主题的HEAD中时,它似乎不起作用。这是我在主题中使用的代码:

<script type="text/javascript">
$(function() {
  $('ul.menu > li > a').click(function(e) {
    $('ul.sub-menu').slideUp('normal');
      if($(this).next('ul.sub-menu').is(':hidden') === true) {    
        $(this).next('ul.sub-menu').slideDown('normal');
      }
    e.preventDefault();
  });
}); 
</script>

我很少使用Javascript/jQuery,所以我确信这可能是一些小问题阻碍了我。有人想为我指出正确的方向吗?

你确定你没有忘记在你的头部部分添加这一行吗?

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

我敢打赌你忘了包含jQuery脚本...只需添加此行。所以你的代码应该是这样的(只需复制粘贴所有内容,它就可以工作 - 我测试了它 - 脚本在 head 部分内):

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Document sans titre</title>
            <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
            <script>
            /*
            *  $(document).ready(function() { });
            *  is the same as
            *  $(function() { });
            */
            $(function() {
              $('ul.menu > li > a').click(function(e) {
                $('ul.sub-menu').slideUp('normal');
                  if($(this).next('ul.sub-menu').is(':hidden') === true) {    
                    $(this).next('ul.sub-menu').slideDown('normal');
                  }
                e.preventDefault();
              });
            });

            /*
             *  Page reference: http://css-tricks.com/forums/discussion/20608/mobile-navigation-dropdown#Item_10
             */
            </script>
            <style>
            #main-nav_responsive {
                display:block;
                z-index: 99;
                margin: 0 auto;
                width: 95%;
            }
            #main-nav_responsive li {
                list-style:none;
                margin: 0 auto;
                padding-top: 2px;
            }
            #main-nav_responsive ul {
                padding: 0px;
                height: auto;
                z-index: 10000;
            }
            #main-nav_responsive ul li a {
                display: block;
                color:white;
                text-decoration:none;
                font: normal 18px "Century Gothic", sans-serif;
                text-align: left;
                margin: 0;
                text-transform:capitalize;
                background: #ED1C3F;
                padding: 9px 0px 11px 20px;
                text-transform:lowercase;
            }
            #main-nav_responsive ul li a:hover {
                background:#E35959;
            }
            #main-nav_responsive .sub-menu li a {
                background: #35342f;
            }
            ul.sub-menu {
                display:none;
            }
            </style>
            </head>
            <body>
            <div id="main-nav_responsive">
              <div>
                <ul class="menu">
                  <li>
                    <a href="#">Specialties</a> 
                      <ul class="sub-menu">
                        <li><a href="#" >Consumer Packaged Goods</a></li>
                        <li><a href="#" >Grocery Stores</a></li>
                        <li><a href="#" >Resorts + Hospitality</a></li>
                        <li><a href="#" >Education</a></li>
                        <li><a href="#" >New Product Development</a></li>
                      </ul>
                    </li>

            <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-522"><a href="#" >Services</a>
            <ul class="sub-menu">
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-523"><a href="#" >Advertising</a></li>
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-538"><a href="#" >Branding</a></li>
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-524"><a href="#" >PR</a></li>
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-525"><a href="#" >Online</a></li>
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-527"><a href="#" >Events</a></li>
            </ul>
            </li>

            <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-643"><a href="#" >Results</a></li>

            <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-645"><a href="#" >About</a>
            <ul class="sub-menu">
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-531"><a href="#" >Who We Are</a></li>
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-532"><a href="#" >How We Work</a></li>
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-533"><a href="#" >Blog</a></li>
            </ul>
            </li>

            <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-534"><a href="#" >Contact</a>
            <ul class="sub-menu">
                <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-535"><a href="#" >Careers</a></li>
            </ul>
            </li>
            </ul>
            </div>
            </body>
            </html>

这个函数<?php wp_enqueue_script("jquery"); ?>调用jquery库是不够的。您必须使用 wp_enqueue_scripts 操作挂钩它。如果你真的关心jquery冲突,那么请遵循这个并将这段代码放在你的函数中.php

//function to call jquery
function install_jquery(){      
   wp_enqueue_script('jquery'); 
}
//finally, the action hook to put jquery library in your theme
add_action( 'wp_enqueue_scripts', 'install_jquery');
function my_scripts_method() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
    wp_enqueue_script( 'jquery' );
}    
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

这就是为我解决它的原因。感谢巴拉卡达姆和loQ的帮助。我不得不使用Google CDN来覆盖默认的WP jQuery。

相关内容

  • 没有找到相关文章

最新更新