私はこのようなシンプルなメニューを持っています:
_<ul id="navigation">
<li id="m_li">
<div><span>+</span><a href="#" >myself</a></div>
<ul class="test" id="x_ul">
<li id="li">
<a href="#" >Pictures</a>
</li>
<li id="li">
<a href="#" >Audio</a>
</li>
</ul>
</li>
<li id="profile_modeling_li">
<div><span>+</span><a href="#" >friend</a></div>
<ul class="test" id="y_ul">
<li id="li">
<a href="#" >Pictures</a>
</li>
<li id="li">
<a href="#" >Video</a>
</li>
</ul>
</li>
</ul>
_
次に、jqueryを使用するので、_+
_記号をクリックすると、ulが下にスライドします。
_$("#navigation > li > div > span").click(function(){
if(false == $(this).next('ul').is(':visible')) {
$('#accordion ul').slideUp(300);
}
$(this).next('ul').slideToggle(300);
});
_
問題は、$(this).next('ul')
が次のulを好まないように見えることです
私が間違っていることは何ですか?
使用する
$(this).parent().next()
の代わりに
$(this).next();
そしてもちろん、目的の要素を引数として識別するセレクター(より単純またはより複雑)を渡すことができます。
$(this).parent().next('ul.test[id$="_ul]"');
.next / .prev
兄弟をトラバースし、ulはスパンの子ではありません。おそらく最も近いli
を見つけ、.test
を見つける必要があります。
$(this).closest('li').find('ul.test')