2012-02-13 8 views
3

にこのイベントは、要素のセットに添付されています再帰jQueryのイベント

var elems = $(this).filter(function(){ 
    ... 
}); 
私はchangeイベントハンドラ内でこれらの要素の変更イベントをトリガしますが、現在の要素を無視することができますどのように

elems.bind('change input', function(){ 

    // do some stuff... 

    // then trigger change, but not on "this", to avoid the recursion issue 
    elems.change(); 

}); 

は基本的に私はelemsからthisを無視otのしたいが、唯一の私の "マニュアル" の変更で() -

答えて

3
var elems = $(this).filter(function(){ 
    ... 
}); 

elems.bind('change input', function(){ 


    // then trigger change, but not on "this", to avoid the recursion issue 
    elems.not(this).change(); 

}); 

ものの私は、このシナリオは設計上の問題のように思えます。要素は、それは彼自身を含むいくつかの要素に変更イベントのコールバックを設定し、変更を取得
...ぎこちない音とその再帰は、他の大きな問題にちょうど症状です...

それはおそらくAAで行うことができますロットクリーナーのやり方。現在の要素フィルタリングあなただけできる

+0

+1 Re。貧しいデザインの問題 –

+1

@ RoryMcCrossan。厄介な音とその再帰は単なる症状です... – gdoron

3

これを試してみてください...上記の呼び出し:

elems.not(this).change(); 
+0

を私はすべての要素にそのイベントを維持したい、私は手動で – Alex

+0

@Alexああ変更をトリガするとき、私はちょうど含まれたくない私は理解して私は自分の答えを更新しました。 –

2

elems.not(this).trigger('change'); // or just .change()