クライアント側のチャネルにイベントをバインドし、サーバーからのメッセージを待機し、コールバックで匿名機能を起動し、メッセージデータをthing
パラメータで渡します。このjavascriptの動作に関する誤解
channel.bind('coordinates_sent', function(thing) {
var x = thing.left;
var y = thing.top;
$(window).scroll(function(){
alert(x + " " + y);
});
alert(x + " " + y);
});
scroll
メソッド以外の警告メッセージは期待通りに機能します。新しいメッセージが到着したときにサーバーから送信されたデータの新しいx座標とy座標を警告します。
ただし、スクロールメッセージ内のアラートメッセージは、予想どおりに動作しません。 1つのメッセージがイベントリスナーに送信されている場合、スクロールするたびにそのアラートはそのメッセージのx座標とy座標を正しく表示します。ただし、別のメッセージが入力された場合は、アラートに最初のメッセージの最初のxとy座標が表示され、別のアラートで最新のメッセージのxとy座標が表示されます。
なぜこれが起こっているのか理解できません。
は、xとyは匿名関数内でローカルスコープになっていませんか? –
@ジャスティン:ああ、良い点。あなたは何を達成しようとしていますか?ユーザーがスクロールすると、サーバーから受信した最後の座標が表示されますか? – icktoofay
ええ、たぶん、 'scroll'イベントハンドラがコールバックの中にあるかもしれませんが、まず、すべての' scroll'イベントハンドラを削除してください。 –