2011-10-20 7 views
0

各divにはそれぞれ独自のクラスやIDを持つ多数の異なる項目のインスタンスが含まれています。 の文脈ではdiv内で急速に繰り返されるトラバース

// Stuff like this occurs 15-20 times for similar but different actions 
$(this).parent().nextAll('.target').eq(0).find('.toggle').slideToggle(); 
$(this).next('.alert').html('Success'); 

の.jsコードの多くこれらの親のdivの各内の要素に適用され、私の.jsは、のようなものを行うには一定の必要性によって肥大化しつつあります文書、なぜこのコードが必要なのか分かります。しかし、私は私ではなく、文書全体の親のdivとして基準点を再定義することしかできなかった場合、私ははるかに簡単で上記の複雑なコードを置き換えることができることを感じる:

function keepingCodeWithinParentDiv(){ 
    $('.toggle').slideToggle(); 
    $('.alert').html('Success'); 
} 

ので、そこにありますJavascriptで言うには:for this part nothing exists outside this div

$(".toggle", element).slideToggle(); 

ためjQuery docを参照してください:あなたは親要素を持っている場合は

+0

いいえ。しかし、共通の祖先を使用して、それに基づいて 'find()'を呼び出すことで、まだまだクリーンアップできます。 – alex

答えて

2

選択し、あなただけの任意のjQueryのコンテキストとして渡すことができますし、あなたのjQueryのセレクタの操作を制限したいという(のはそれelementに名前を付けましょう)詳細情報

実際のHTMLを表示し、取得しようとしていることを説明した場合は、より具体的なアドバイスを行うことができます。

+0

これはコンテキストと呼ばれます。 $( "。toggle"、element) は と同じelement.find( "。toggle") – HerrSerker

+0

http://api.jquery.com/jQuery/#jQuery1(セレクタコンテキスト)を参照してください。 – HerrSerker

関連する問題