2011-12-29 25 views
-1

明快は.getJSONを(使用して作成したコンテンツにイベントハンドラを追加することはできません)

のために編集された質問私は$.getJSON()方法を使用して、AJAX呼び出しを行い、コールバック関数内のページにいくつかの要素を追加します。

$.getJSON("pathToFile/file.json", function(data) { 
    $.each(data.lst, function(i, item) { /* Add HTML elements to the page.. */ }); 
}); 

それすべて正しく表示されますが、私は要素のために追加したイベントハンドラは動作しません:

$(".newElement").on("click", "input", function() { 
    alert("Something happened.."); 
}); 

入力要素をクリックしても何も起こりません。私は何が欠けていますか?既存の要素にイベントハンドラをバインドする必要が

説明

@jbabeyが親切に指摘したように、the documentation for .on()状態。イベントハンドラの適用時に要素が存在しないため、コードは機能しません。

+0

どこ '.on()'のコードを追加したのですか?要素が追加された後でなければなりません。 –

+1

このコードは間違いなく改良することができます。新しいコンテンツを返さずに '.html()'にコールバックを渡すことは意味がありません。私はあなたがHTML文字列でよりもDOM要素でもっと仕事をすることをお勧めします。これにより、物事がより明確になります。 –

+0

複数行の文字列設定は、新しいブラウザでも機能しますか?私はそうすると思います。 – Pointy

答えて

1

エラーが発生していますか、何も起こりませんか?あなたはトラフィック(有用な情報を見ることができますか?

$ .getJSONの使用を$.ajaxに変更することをお勧めします。そうすれば、エラーハンドラを追加して実際の問題を調査することができます。 AJAX呼び出しを行うためのjQueryを使用するためのさまざまな方法で

良い記事はここで見つけることができます: http://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/

+0

これは興味深く有用な情報ですが、内容は正しく表示されています。 – Pointy

+0

内容は間違いなく正しく表示されます。 info jbabey :)ありがとう。 – mtl

+0

内容が正しい場合(申し訳ありませんが、私はその部分を見逃していました)、あなたのHTMLが整形されていることを確認します。文字列連結を介してHTMLを構築すると、予期しない動作が発生する可能性があります。ここで簡単なデモをチェックしてください:http://jsfiddle.net/HQpj6/ – jbabey

関連する問題