2016-11-06 4 views
0

Ich kämpfe seit ein paar Tagen jetzt mit Menü-Link als Selektor verwenden. Es funktioniert mit Nicht-Wordpress-Version der gleichen Sachen, aber wenn es um WP geht, macht mich verrückt. ist hier YouTube-Link mit Erklärung und Verhalten: https://youtu.be/SFx8TyPWhLgjQuery-Selektor funktioniert nicht mit WP-Menüelement Anker

ich mehrere Codes versucht, verschiedene Selektor Pfade:

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

und so weiter.

Wenn ich es Länge überprüft es (mit diesem Code) korrekt funktioniert:

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

Aber es ist nicht tut, was getan werden muss. Hier sind meine jQuery-Codes (alle Arbeiten mit li als Selektor):

$('.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) 
    }); 
}); 

Hier ist der HTML-Ausgabe für das Menü:

<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> 

Ich bin nur aus Ideen, was mit ihm falsch ist . Bitte, helfen Sie.

Cheers, Kris

+1

haben Sie die Konsole auf Fehler überprüft? – Dekel

+0

Hallo, ja, alles klar – Kris

+0

bist du sicher? weil '$ (nav.mobile> ul> li.menu-item-hat-kinder> a)' das ist ** nicht ** ein gültiger JavaScript-Code – Dekel

Antwort

0

es gefunden! Das Problem wurde durch diesen Teil von CSS

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

Im Allgemeinen ist es im Zusammenhang mit Genesis nativen Superfish.js gemacht, den Menü-Dropdown-Listen behandelt.

einfache Änderung an meine mobile.css genagelt es

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

Vielen Dank für die Hilfe @AndyTschiersch!

0

Bitte versuchen Sie dieses und lassen Sie mich wissen, ob die Klasse is_open in das Untermenü ul hinzugefügt:

$(".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

Danke, dass du mir geholfen hast. Aber es fügt nicht, dass Klasse – Kris

+0

Ich habe Update meine Antwort. Nur hinzugefügt 'console.log (" test ");'. Lässt prüfen, ob diese Funktion ausgeführt wird. –

+0

Es führt die Funktion nicht mit ".expand> a> span" aus, wenn ich es nur auf .expand ändere und auf das "was wir machen" klicken, dann funktioniert es. So gleich die ganze Zeit, es sieht aus wie jQuery kann nicht sehen, dass friggin a und span – Kris

Verwandte Themen