2011-01-21 24 views
1

これはとても簡単に聞こえますが、私はそれをすることができないようです。アイデアは、 'a'タグがクリックされたときに、 'collapsed'というクラスがあるかどうかをチェックすることです。そうであれば、 'ul'バックグラウンドを変更します(タグはその一部です)。私は「a」タグがクリックされたかどうかわからないので、それがその一部である 'ul'のIDを知らないのです...私は親 'ul'を見つけるためにドリルアップできると思っていましたが、働いていない。背景イメージを変更するにはどうすればよいですか?

HTML:

<ul class="some-class" id="some-id-1"> 
    <a href="#" id="id-1">something</a> 
    <li> 
     <a class="collapsed">something else</a> 
    </li> 
</ul> 

<ul class="some-class" id="some-id-2"> 
    <a href="#" id="id-2">something</a> 
    <li> 
     <a class="collapsed">something else</a> 
    </li> 
</ul> 

<ul class="some-class" id="some-id-3"> 
    <a href="#" id="id-3">something</a> 
    <li> 
     <a class="collapsed">something else</a> 
    </li> 
</ul> 

私のスクリプト:

$('a').click(function() { 
    var cName = this.className; 
    switch(cName) { 
     case 'collapsed' : 
     $(this).parent().find('> ul').css('background','url(img/red.png) 0 0'); 
     break; 
    }; 
}); 

私が間違って何をしているのですか?任意およびすべての提案は歓迎されている...

+0

JQueryはあなたが間違っていることです。 –

+0

@Anonymous、そのタイプのコメントは誰にも役立ちません。 JQueryが最良のソリューションではない場合、代替オプションを提供する方法はありますか? –

+0

私は、彼がコードを読みやすくするために、通常のJavaScriptを使用することを示唆しています。それだけです。 –

答えて

3

はjQueryのclosest機能をこのように使用してみてください -

$('a').click(function() { 
    var cName = $(this).attr('class'); 
    if(cName == 'collapsed') { 
     $(this).closest('ul').css('background','url(img/red.png) 0 0'); 
    }; 
}); 
+0

はい!天才!素晴らしい作品!ありがとうございました! :o) – Angie

0

まず最初に、this$(this)のように使用する必要があります。

$('a').click(function() { 
    // Change the first .collapsed element next to the clicked a 
    $(this).next('.collapsed').css('background-color', 'url(img/red.png) 0 0'); 
}); 
関連する問題