2011-08-03 2 views
0

AJAXの読み込みによってメインコンテンツが頻繁に変更されるDjangoアプリケーションがあります。新しく読み込まれたコンテンツでたくさんのjavascriptを実行する必要があるので、私は現在、ロードされたHTMLテンプレートの最後にいくつかのdocument.readyと他の関数を含むjavascriptブロックを追加しています。AJAX DjangoアプリにJavaScriptを挿入するには?

これは、AJAX読み込みコンテンツにJavaScriptを読み込むための適切な方法ですか?コンテンツブロックを新しい(AJAXが読み込まれた)HTML +スクリプトに置き換えると、古いスクリプトはきれいに削除されますか?

javascript /メモリの使用状況を検出する監視ツールはありますか?いくつかのページクラッシュが発生しているので、いくつかのリークが発生していると思われます。

ありがとうございます!

答えて

0

あなたは間違いなく.live()を使用してではなく、ロードされたHTMLコンテンツ内の新しいjavascriptのブロックを含むになります。

http://api.jquery.com/live/

ドキュメントから:

.live()メソッドができていますイベント委任を使用してDOMに追加された のまだ存在していない要素に影響を与える:ハンドラバインド が祖先要素にトリガーされたイベントの原因となる子孫の にあります。

+0

私は既に.live()を広く使用しています。私はまだ新しいコンテンツがロードされるときにスクリプトを実行する必要があります(つまりdocument.ready) – sxv

+0

hmm ..コンテンツをロードするスクリプトの成功関数の一部としてスクリプトを実行できませんか? –

+0

成功関数は、すべてのデータが完全にロードされるまで、またはデータが返されるのを見るまで待ちますか? – sxv

0

IMHO AJAXの読み込みページ要素にJavaScriptコードを挿入しないでください。彼がそれをする最善の方法ではありません。 なぜAJAXの読み込みが終了した後、JavaScript関数を作成して起動できないのですか?またはクリックの上に置いたり、イベントを置く...

はJavaScriptにOnclick:スクリプト内

<a class="orange" 
    onclick="return voteClick(this, '{{ item.pk }}', '1', '{% url ajaxvote %}')" 
    href=''>Button text</a> 

、その後:

function voteClick(self, pk, multiplier, url){ 
    //some actions function makes 
    //for e.g. making POST or changing DOM 
    // you can use vars that are generated by django template system 

    return false; 
}; 

jQueryの道:

$.post(url, { param1: value1, param2: value2 }, function(data){ 
     //some function actions upon your AJAX complete 
     //call your function with code here 
     // you can load some 'data' for this script from django 
     // and not the whole script 
     voteClick(self, value1, value2, data); 
     return false; 
    } //end function 
);//end POST 

ouはこれについてもっと読むことができます:jQuery POST

ここで重要なのは、MEDIA_ROOTの静的コンテンツとしてスクリプトを読み込んで、必要なパラメータを渡す必要があるということです。 live()関数でスクリプトを読み込むのは難しい方法です。あなたは関数とパラメータの多くを追跡する必要があります。

もちろん、jQueryを使用している場合は、セレクタでコードイベントをトレースするのは簡単です。しかし、もう一度...なぜAJAXリクエストでコードをロードする必要がありますか?スクリプトファイルとしてここに使用されるのは間違いなくここに使用される静的ファイルです。

関連する問題