0

ajax応答後にロードスクリプトを既存のスクリプトに置き換えたい。

一部の要素のみを更新するため、ページ全体がリロードされず、置き換えられた要素の一部のイベントが失われます。

ajax で読み込まれたコンテンツでアプリケーション Javascript を再実行する<--- これは私にとっては解決策ではありません...

ロードされたhtmlとeval()それらからスクリプトタグを取得しようとしました。ただし、これは既存の機能を置き換えるものではなく、2 倍にするものです。

スクリプト関数を使用せずに置換または再実行したい$(document).html(data);

http://www.javascriptkit.com/javatutors/loadjavascriptcss2.shtmlのような多くの参照を読みました

でもよくわからない……。

よりわかりやすい例を助けてアドバイスしてください。どうもありがとうございました!

私のスクリプトは今

  $script.each(function(index){ //data from loaded page, same page
    if(!$(this).attr('src')){    //replace where is not from external only

          $(document.getElementsByTagName( 'script' )).slice(index).remove(); 
          //remove existing script, no working

         eval($(this).text()); 
         // re-execute, wokring
     }; 
 }); 
4

1 に答える 1

1

ロジックを関数に結合して、必要なときに呼び出すことができます。さらに、ajax で読み込まれたコンテンツに JS 関数が含まれている場合は、取得した html をページに配置した後に呼び出すことができます。

動的にロードされるコンポーネントにイベントをバインドする必要がある場合、次のような関数を実装します。

function rebindDynamic() {
  $('#elem1')
    .unbind()  //Or unbind('click') if you want to unbind specific handlers
    .click(function (e) { ... });

  $('#elem2')
    .unbind()  //Or unbind('keyup') if you want to unbind specific handlers
    .keyup(function (e) { ... });

  ...................
}

それが役立つことを願っています。

于 2013-01-11T08:00:31.710 に答える