2010-11-18 16 views
0

を使用して、私はこのように私のコードを書いています:これは働くことができないのはなぜ - ライブアップデートをjqueryの

function updates_cb() 
{ 
    in a while loop to call append_message 
} 

function append_message(message) 
{ 
    append the html of message into the page 
    now I am using selector to add callback to newly added element 
    $(jmsg).hover(function(){console.log("hover");}) 
} 

問題が追加最後の要素だけが.hover()コールバックの設定、他の持っている、非常に奇妙ですホバーイベントハンドラの設定がありません。

私は間違っていますか? jQueryを使って新しく追加された要素を操作することはできませんか?

答えて

3

私はあなたがこれまでで最も一般的なJavascriptの問題を越えつまずくしているかなり確信している:

for (var x = 0; x < 10; x++) { 
    setTimeout(function() { alert(x); }, 1000); 
} 

このアラート「10」10回。これは、alert(x)の変数xがコピーではなくライブ参照であるため、タイムアウトが設定されたときの時刻ではなく、xであることを警告する必要があるときに、xが何であるかを警告します。これはclosuresのために動作します。あなたのコードは本当に私は、これはあなたが理解するのに役立ちます願って、私は本当の答えをベース可能性が何も表示されませんので

for (var x = 0; x < 10; x++) { 
    setTimeout((function (y) { 
     return function() { alert(y); } 
    })(x), 1000); 
} 

:この問題を解決するために新しい変数のスコープを導入し、別の匿名関数、および他の閉鎖を使用します概念。