2012-03-26 16 views
0

CMSのメニューコントロールが非常に限られているサイトがあります。そのように私はjQueryでこれらの問題を回避して、私が望むようにメニューを表示しようとしています。私はそれがまだHTMLにあることを知っているが、私が望む方法を表示している限り、少なくとも(私の基準では)それはうまくいくだろう。jQuery:div内のネストされたリストメニュー内の単一の親リンクを見つけて非表示にする - contains();

現在、問題のメニューは次のようになります。

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

私はシンプルな$で欲しいものを達成している(「:(、この親を取り除く)が含まれ」))(非表示;。しかし、メニューは2つの場所に引っ張られているので、私はサイドメニューdiv内のメニューを隠したいだけです。

私はこのアプローチを試してみました:私が最初になります(私は解決策を取得しようとするChromeでコンソールで遊んでてきた)

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

をしかし、これはページをクラッシュ私のjavascriptがひどいので、どんな援助もうまく受け入れられます。

ありがとうございます。

あなたのコードは次のようになります
+0

あなたは全体のサイドメニューやテキストを持っているだけで、リンクを非表示にしたいですか? – Dips

+0

親の親リンクを非表示にしたいが、子リンクを表示したかった。 「この親のRIDを隠す」と表示し、「これを表示」を表示すると「表示する」が表示されますが、ul li ul li構造の1つ上のレベルを表示します。 これらの回答はすばらしく、要求通りにリンクが隠されていましたが、私はこの方法で欲しいものを達成できるとは思わないので、別のオプションを検討する必要があります。これはInterspireショッピングカートの生成メニュー用で、メニューオプションは表示するものを選択するのには適していません。私は自分が望むメニューをハードコードしなければならないかもしれません。おかげさまで – James

+0

より良い例を明確にするには、達成したいものを メニュー構造は TOPS、子供用Tシャツ、セーター、ジャケットなど。 私はトップスを表示せず、Tシャツ、セーター、ジャケットを表示し、それらのカテゴリーの子供を表示することを望んでいました。 (TOPSの子どもと孫のカテゴリーを表示しますが、TOPS自体は表示しません) – James

答えて

0

...

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

この試してみてください。すべての子をループ

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

最初のインスタンスを検索...

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

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

隠すものをターゲットにする必要があります。たとえば、 "この親を取り除く"テキストを持つリンクを非表示にしたい場合は、a:containsをターゲットにすることができます。親を非表示にする場合は、#sidemenu:containsを親にする必要があります。ここでのコード例がある

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

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

Jsfiddle Demo

関連する問題