2012-02-15 16 views
1

私は何をしようとしていますか?親画像に背景画像を付けますか?

私はメニュー内にサブメニューを持っています。

これは私がイムは、親ビットで間違っていると思います。..

$('li.on').closest('ul').parent('li').css({ backgroundImage: 'url(/content/images/point.png)', backgroundRepeat: 'no-repeat' }); ; 

私がしようとしていますjqueryのでしょうか?

これは私がテストをクリックした場合そう、スポーツやレジャーの背景を取得する必要があります...

<div class="sideMenu2"> 
    <ul> 
     <li><a href>retail</a> 
      <ul class="subsideMenu2"> 
       <li ><a href="/portfolio/5/0">cabot circus</a></li> 
       <li><a href="/portfolio/6/0">st. stephen&#39;s</a></li> 
       <li><a href="/portfolio/7/0">silverburn</a></li> 
       <li><a href="/portfolio/8/0">the elements</a></li> 
      </ul> 
     </li> 
     <li><a href>sports &amp; leisure</a> 
      <ul class="subsideMenu2"> 
       <li class= "on"><a href="/portfolio/19/0">test</a></li> 
      </ul> 
     </li> 
    </ul> 

メニューですが、現在は小売です。

+1

、何それはやっていることは正しいです。クラス「オン」のリは、スポーツ&レジャーではなく小売りになっています。そのテストが上ですが、小売店は、まだあなたは、とにかく '' $(this)を使用してみました背景 – Archer

+0

は申し訳ありませんが私はそれを – Beginner

答えて

0

あなたが書いたjquery式の冒頭で右に$('li.on')があるので、小売りの理由があります。これは小売店の下でその影響を受ける小売店に行くときliを選択しています。

正しいターゲットを取得するには、最初のjquery式を取得する必要があります。これはクリックハンドラにある場合は$(this)に変更するだけで簡単ですが、正確にはコンテキストに依存します。あなたがclickハンドラをバインドするのを忘れたよう

+0

申し訳ありませんのliの変更を変更しますか?クラスを変更してから上記のコードを実行して間違った場所を見つけられるようになる間に競合状態が存在する可能性がありますが、チェックした時点でリセットされます。あなたがクリックしたアンカーを持っているなら(それは私があなたがやっていると仮定します)、あなたがいつもその中にいるなら、再びliを検索する必要はありません。 – Beginner

+0

を与えられているので、あなたがテキストをクリックすると – Chris

1

が見えます。これは、ユーザーがアンカー(<a>)をクリックする場合のデフォルトのアクションを防ぐためにも重要です。

$('li.on a').on('click', function(event) { 
    event.preventDefault(); 
    $(this).closest('ul').parent('li').css({ 
    'backgroundImage': 'url(/content/images/point.png)', 
    'backgroundRepeat': 'no-repeat' 
    }); 
}); 

デモ:あなたは私たちを示してきたマークアップのためにhttp://jsfiddle.net/qHUT4/