2012-03-26 4 views
0

Ich habe eine Website, die CMS hat sehr begrenzte Menüsteuerung. Als solche versuche ich, diese Probleme mit jQuery zu umgehen, um das Menü anzuzeigen, wie ich will. Ich weiß, dass es immer noch im HTML-Format sein wird, aber solange es so angezeigt wird, wie ich es möchte, ist es in Ordnung (zumindest für meine Standards).jQuery: Suchen und Verbergen einzelner übergeordneter Links im geschachtelten Listenmenü innerhalb von Div - using contains();

Das fragliche Menü sieht momentan ungefähr so ​​aus.

<div id="sidemenu"> 
    <ul> 
     <li class="childlist"> 
        <a href="#">GET RID OF THIS PARENT</a> 
         <ul> 
          <li>Show this</li> 
          <li>Show this</li> 
          <li>Show this</li> 
         </ul> 
     </li> 
    </ul> 
</div> 

ich erreicht habe, was ich mit der einfachen $ wollen ('a: contains (werde diese ELTERN RID)') hide();. Das Menü wird jedoch an zwei Stellen gezogen, und ich möchte nur die im Sidemenu div verbergen.

ich diesen Ansatz versucht:

$side = $('#sidemenu'); 
$hidethis = $('$side:contains('GET RID OF THIS PARENT')'); 
$hidethis.hide(); 

Aber diese stürzt die Seite (Ich habe um in der Konsole in Chrome zu spielen, um zu versuchen, eine Lösung zu erhalten)

ich der erste sein wird, zuzulassen, dass mein Javascript schrecklich ist, also würde jede Hilfe gut empfangen werden.

Vielen Dank im Voraus.

+0

Sie ganze Seite im Menü oder einfach nur einen Link verbergen Wollen die den Text hat? – Dips

+0

Ich wollte den obersten übergeordneten Link ausblenden, aber seine Kinder anzeigen. , d. H. Verstecken Sie "RET RID dieses Elternteils" und zeigen Sie "SHOW THIS" an SHOW THIS "SHOW THIS", aber nehmen Sie sie eine Ebene in der ul li ul li-Struktur. Alle diese Antworten waren großartig und haben den Link wie gewünscht versteckt, aber ich glaube nicht, dass ich durch diese Methode erreichen kann, was ich will, also muss ich eine andere Option betrachten. Dies ist für das generierte Menü in Interspire Shopping Cart und die Menüoptionen sind nicht gut für die Auswahl, was angezeigt werden soll. Ich muss das Menü, das ich möchte, fest codieren. Danke. – James

+0

Um mit einem besseren Beispiel zu verdeutlichen, was ich erreichen wollte: Die Menüstruktur wäre so etwas wie TOPS mit Kindern T-Shirts, Pullover, Jacken gewesen. Ich hatte gehofft, die Tops nicht anzuzeigen und nur T-Shirts, Pullover, Jacken anzuzeigen und dann die Kinder dieser Kategorien anzuzeigen. (Zeigen Sie TOPS 'Kategorien für Kinder und Enkelkinder an, aber nicht für TOPS selbst.) – James

Antwort

0

Der Code sollte wie folgt aussehen ...

$side = $('#sidemenu'); 
$hidethis = $side.find(':contains('GET RID OF THIS PARENT')'); 
$hidethis.hide(); 
0

versuchen Sie dies:

jQuery("#slidemenu").find("a:contains('GIT RID OF THIS PARENT')").hide(); 

Finden erster Instanz ...

jQuery("#slidemenu > .childlist:first").find("a:contains('GIT RID OF THIS PARENT')").hide(); 

Looping durch alle Kinder:

jQuery("#slidemenu").find(".childlist").each(function() { 
    var $childListBranch = jQuery(this); 
    $childListBranch.find("a:contains('GIT RID OF THIS PARENT')").hide(); 
}); 
0

Sie müssen gezielt auswählen, was Sie verbergen möchten. Zum Beispiel, wenn Sie einen Link, der "diesen Elternteil loswerden" Text haben möchten, können Sie zielen a:contains. Wenn Sie das übergeordnete Element ausblenden möchten, müssen Sie #sidemenu:contains auf das übergeordnete Element ausrichten. hier ist der Code Beispiel

//Hide a link 
$("a:contains('GET RID OF THIS PARENT')").hide(); 

    //Hide its parent 
$("#sidemenu:contains('GET RID OF THIS PARENT')").hide(); 

Jsfiddle Demo

Verwandte Themen