2011-03-06 4 views
2

要素を一致させようとすると、.each()で設定された間隔でそれらを起動しようとしますが、一致する要素の右への参照を取得できません。jQueryは.eachで要素を一致させ、処理をsetTimeoutで遅らせますか?

これは正しく一致しますが、それらはすべて同じ時間で焼成している:

$("div[id^='data_field'] input:submit").each(function(index) { setTimeout(console.log($(this)),1000*index); }); 

これは、それらを正しく発射しますが、要素のマッチングがうまくいかない:

$("div[id^='data_field'] input:submit").each(function(index) { setTimeout(function(){ console.log($(this)); },1000*index); }); 

それが権利を取得する方法は?そしてはい、それはそれぞれと一緒にいる必要があります...

答えて

2

"this"は、setTimeout内の関数にスコープされているときには何かになります。あなたが$(this)の情報をsetTimeoutの外側に格納すると、それは機能します。ここでjQuery’s .delay()機能を使用して遅延を.eachの例を示します。このフィドルhttp://jsfiddle.net/VZwFB/1/

+0

うわー、私は初心者ですが、リンクに自分のコードが表示されます。 – kilves76

+0

私の悪い、私の編集は保存されていませんでした。リンクを更新しました。 – chris

+0

ありがとう!それは問題の一部を解決します:D。実際には、私は$ thisを送信またはクリックしようとしているからです。しかし、$(this).val()では、私はそれを行うことはできませんが判明した、試してsubmitVal.submit(); 。クリック(); .onclick();彼らはすべてエラーを返しますUncaught TypeError:Object XXXはメソッドを送信していませんか? – kilves76

1

を見てみましょう:

$('#show-articles').click(function(event) { 
    var delayInterval = 1; 
    $('.articles').each(function(){ 
    $(this).delay(delayInterval * 50).fadeIn() 
    delayInterval++; 
    }) 
    event.preventDefault(); 
}) 

...もちろん、あなたは、あなたの正確なニーズに適応する必要があります。

関連する問題