2012-01-25 14 views
0

このタイトルは申し訳ありません。jQuery:別の要素の中の要素、最初の要素をクリックして2番目の要素を確認してください

私はこれを持っている:ため

<a class="directory"> 
    Directory 1 
    <a class="add">Add a file</a> //show/hide on mouseover 
</a> 

$('a.directory').click(function() { 
    $(this).parent().find('ul:first').slideToggle('medium'); 
}); 

I:私はファイルを表示するために最初の<a>をクリックしたとき、私はトグルを行う

enter image description here

2番目のファイルをクリックするとファイルが追加されます<a>

<a>をクリックすると、最初に<a>をクリックしてフォルダを開くのを防ぐことができますか?

私はこれを試してみたが動作しません:

$('a.directory:not(.add)').click(function() { 
    $(this).parent().find('ul:first').slideToggle('medium'); 
}); 
+0

詳細を教えてください。あなたの最初のクリックイベントはul要素を見つけることですが、例の先頭の構造には要素があります。 –

答えて

1

<a>を最初のものから引き出します。これは有効なHTMLではありません。次に、CSSを使用して書式設定して、同じ効果をスタイリッシュに得ることができます。

<a class="directory"> 
    Directory 1 
</a> 
<a class="add">Add</a> 

セレクタは、期待どおりに動作するはずです。

2

あなたの2番目のリンクは、クラスを持っているので、あなたの利益のためにそれを使用することができます。

$('a.directory:not(.add)').click(function(e) { 
    if (e.target.className === 'add') return false; 
    $(this).parent().find('ul:first').slideToggle('medium'); 
}); 

のお知らせそのほか:

if (e.target.className === 'add') return false; 

これは、あなたが探している2番目のファイルの追加リンクをクリックすると機能しなくなります。


あなたの現在のマークアップは、とにかく有効ではありません。代わりにそれを試して修正する必要があります。

+0

他の$( '.add')の実行をブロックします。マークアップを変更しようとします(すべてのJSはこのマークアップ用に設計されていますが...)。 –

+0

@GG:それはリンクのリンクのためですが、実際にはそれを修正する必要があります。 – Sarfraz

関連する問題