2012-04-30 12 views
5

ページ上のメニュー項目を開くために使用しているブレッドクラムのテキストがあります。たとえば、bctext = 'pasta'とします。jqueryはそれ以上の文字列ではありません。

"パスタ"という単語をターゲットにしたいと思いますが、 "yadda yadda yadda pasta"とは言いません。単一の単語「パスタ」のインスタンスのみが一致するか、またはbctextがフレーズであった場合、それは正確なフレーズしか見つけられません。

$('ul#accordion a:contains(' + bctext + ')') 

しかし、これは、もちろん、 "yaddaのyaddaのパスタ" を検索します。

これは私がこれまで持っているものです。

var bctext = $('#CategoryBreadcrumb ul li:last-child').prev().children().text(); 

その後、私は次のようにメニューを編集:私は次のようにbctextを得る

$('ul#accordion a:contains(' + bctext + ')').parent() 
              .addClass('special') 
              .children('ul') 
              .css('display','block'); 

は、私は可能性のために行くよとは何ですか?

答えて

14
$('ul#accordion a').filter(function() { 
    return $(this).text() == bctext; 
}).parent().addClass('special').children('ul').css('display','block'); 

:contains()カスタムコールバックで.filter()を使用すると、パフォーマンスの欠点を持っていないので、とにかくネイティブセレクタではありません。

+0

申し訳ありませんが、私のjqueryは素晴らしいとは言えません...私はこれを私がやったことにどのようにするかわからないので、上記のコードをさらに追加します。 – liz

+0

上記のように私は完全なコードが何であるかを加えました。だから今すぐ明らかにする。 (そして多分私はこれをすべて間違っているかもしれません...)私は、タグ内のテキストを検索し、それに変数を与え、ブレッドクラムで見つけたbctextと比較するフィルタ関数を使用しますか? – liz

+0

私は自分の答えを更新しました。 – ThiefMaster

関連する問題