2016-11-06 54 views
0

現在我正在努力使用菜單鏈接作爲選擇器。 它與非wordpress版本的相同的東西,但涉及到WP它讓我瘋狂。 下面是解釋和行爲Youtube鏈接:https://youtu.be/SFx8TyPWhLgjQuery選擇器不能與WP菜單項錨點一起工作

我試圖多個代碼,不同的選擇路徑:

nav.mobile>ul>li.menu-item-has-children>a 
li.menu-item-has-children>a 
.expand>a 
.expand > a 

等。

當我檢查它的長度是否能夠正常工作(使用此代碼):

if ($('nav.mobile>ul>li.menu-item-has-children>a').length) { 
    // Do something 
} 

但它並不做需要做的事情。 這裏是我的jQuery代碼(所有的作品裏有一個選擇):

$('.expand>a ').click(function() { 
    $('.sub-menu').addClass('is_open'); 
    $('nav.mobile').addClass('is_submenu_open'); 

     setTimeout(function() { 
      var offset = $('.is_open').offset(); 
      $('.close_menu').width(offset.left); 
     }, 500) 

    }); 

$(".expand>a ").on('click',function(event){ 
     event.preventDefault(); 

     $(this).parent().find("ul").addClass("is_open"); 
     $("nav.mobile").addClass('is_submenu_open'); 

     setTimeout(function() { 
      var offset = $('.is_open').offset(); 
      $('.close_menu').width(offset.left); 
     }, 500) 
    }); 


$(".expand>a").click(function(event){ 
    event.preventDefault(); 
    if (event.target !== this) 
    return; 
     $(this).find(".sub-menu:first").addClass(function() { 
      $('.sub-menu').addClass("is_open"); 
      $('nav.mobile').addClass('is_submenu_open'); 
       setTimeout(function() { 
        var offset = $('.is_open').offset(); 
        $('.close_menu').width(offset.left); 
       }, 500) 
    }); 
}); 

下面是菜單HTML輸出:

<nav class="nav-header mobile" itemscope itemtype="http://schema.org/SiteNavigationElement"> 
    <ul id="menu-main-menu" class="menu genesis-nav-menu"> 
     <li id="menu-item-56" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-56"><a href="http://www.rfr.dev/" itemprop="url"><span itemprop="name">Home</span></a></li> 
     <li id="menu-item-2077" class="expand menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2077"><a href="#" itemprop="url"><span itemprop="name">What we do</span></a> 
      <ul class="sub-menu"> 
       <li id="menu-item-1883" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1883"><a href="http://www.rfr.dev/what-we-do/search-acquisitions/" itemprop="url"><span itemprop="name">SEARCH &#038; ACQUISITIONS</span></a></li> 
       <li id="menu-item-1884" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1884"><a href="http://www.rfr.dev/what-we-do/project-management/" itemprop="url"><span itemprop="name">PROJECT MANAGEMENT</span></a></li> 
       <li id="menu-item-1890" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1890"><a href="http://www.rfr.dev/what-we-do/interior-architecture-design/" itemprop="url"><span itemprop="name">INTERIOR ARCHITECTURE &#038; DESIGN</span></a></li> 
       <li id="menu-item-1424" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1424"><a href="http://www.rfr.dev/what-we-do/property-advisory/" itemprop="url"><span itemprop="name">ADVISORY</span></a></li> 
       <li id="menu-item-85" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-85"><a href="http://www.rfr.dev/what-we-do/investment/" itemprop="url"><span itemprop="name">Investment</span></a></li> 
       <li id="menu-item-83" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-83"><a href="http://www.rfr.dev/what-we-do/home-management/" itemprop="url"><span itemprop="name">HOME MANAGEMENT</span></a></li> 
      </ul> 
     </li> 
     <li id="menu-item-333" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-333"><a href="http://www.rfr.dev/case-histories/" itemprop="url"><span itemprop="name">Case Histories</span></a></li> 
     <li id="menu-item-22" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22"><a href="http://www.rfr.dev/rfr-scrapbook/" itemprop="url"><span itemprop="name">RFR Scrapbook</span></a></li> 
     <li id="menu-item-21" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21"><a href="http://www.rfr.dev/news/" itemprop="url"><span itemprop="name">News &#038; Press</span></a></li> 
     <li id="menu-item-20" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20"><a href="http://www.rfr.dev/team/" itemprop="url"><span itemprop="name">Team</span></a></li> 
     <li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19"><a href="http://www.rfr.dev/contact/" itemprop="url"><span itemprop="name">Contact</span></a></li> 
    </ul> 
</nav> 

我只是出出主意什麼是錯的。 請幫忙。

乾杯, 克里斯

+1

您是否檢查控制檯是否有錯誤? – Dekel

+0

嗨,是的,全部清楚 – Kris

+0

你確定嗎?因爲'$(nav.mobile> ul> li.menu-item-has-children> a)'這是**不是**一個有效的javascript代碼 – Dekel

回答

0

找到了! 問題是由CSS

.menu .menu-item > a:focus + ul.sub-menu, 
.menu .menu-item.sfHover > ul.sub-menu { 
    left: auto; //exactly this style 
    opacity: 1; 
} 

一般情況下,它涉及到創本地Superfish.js,處理菜單的下拉列表中的這一部分。

我mobile.css簡單的改變釘它

.menu .menu-item > a:focus + ul.sub-menu, 
.menu .menu-item.sfHover > ul.sub-menu { 
    left: 0; 
    opacity: 1; 
} 

謝謝@AndyTschiersch的幫助!

0

請試試這個,讓我知道類is_open是否添加到子菜單UL:

$(".expand > a > span").on('click',function(event){ 
    event.preventDefault(); 

    console.log("test"); 
    $(this).closest("li.expand").find("ul").addClass("is_open"); 
    $("nav.mobile").addClass('is_submenu_open'); 

    setTimeout(function() { 
     var offset = $('.is_open').offset(); 
     $('.close_menu').width(offset.left); 
    }, 500) 
}); 
+0

謝謝你幫助我。 但它並不添加該類 – Kris

+0

我已更新我的答案。剛剛添加了'console.log(「test」);'。讓我們檢查一下這個函數是否被執行。 –

+0

當我將它改爲.expand並單擊outsite「我們所做的」時,它不會以「.expand> a> span」執行該功能,那麼它就會起作用。 所有時間都是這樣,它看起來像jQuery無法看到friggin a和跨度 – Kris