2012-04-06 9 views
0

後、私は...同じページで関数はjQueryのAJAXのHTMLインジェクション

var href=$('.poplight').attr("href"); 
    $('.poplight').attr("href","#"); 
    $('.poplight').click(function(){ 
     $.get(href, function(data) { 
       $("#popup-contents").html(data) 
        // inserts <div id="additionalInfo"> 
        // <legend id="legend-params">Legend</legend> 
        // <div id="toggle"> This should toggle </div> </div> 

      } 
     ); 
    }); 

</script> 

をWebページ上で次のAJAX呼び出しを持って動作しない、トグルというリンクの.jsスクリプトがあります#toggle divは凡例がクリックされるたびに表示されます。これはすべて別々のページ(凡例のトグルだけ)でうまく動作しますが、私はそれをAjax呼び出しで動作させることはできません。私は、jqueryが特定のドームに「付着」するときに行う必要があると考えています...確かに実際に知るためにjqueryの内部について十分に知りません。

ここに外部スクリプトがあります。私はonloadで試して、HTMLでインラインで追加しました。これらの関数は、凡例をクリックすると実行されます(.show()メソッドの後に警告( 'test')を挿入すると、警告ウィンドウが表示されます)。

$('#toggle').hide();            
$("#legend").toggle(
    function() { 
     $("#toggle").show("slide", {direction: "up"}, 200); 
    }, 
    function() { 
     $("#toggle").hide("slide", {direction: "up"}, 200); 
}); 

助けがあれば助かります。

+1

代わりに** ['.on()'](http://api.jquery.com/on/)**を使用してください。このようにして、ハンドラはその場で作成される要素にバインドされます。あなたが今それをやっているやり方は、DOMの準備ができている要素に動作をバインドするだけです。 – m90

+0

http://stackoverflow.com/questions/3796799/jquery-not-working-in-ajax-loaded-divs – OneThreeSeven

+0

お返事ありがとうございます...彼らに行きましょう。 – loeschg

答えて

0

上記のコメントは、私が問題を解決するのに役立ちました(私は彼らがSOの "アルゴリズム"によってコメントに変換されたと思います...答えとしてマークしていたはずです)。 私は基本的に変更されました:

$( "#伝説を")に

に$( "#伝説")(...)を切り替える(、 'クリック' functionX()...)。。 ここでfunctionXは、大域変数がtrueまたはfalseだった場合にいくつかのことを隠すifステートメントでした。おそらく最も清潔な解決策ではないかもしれないが、それは仕事をした。

関連する問題