2013-01-11 25 views
0

我想在ajax響應後將加載腳本替換爲現有腳本。如何替換(重新執行)當前腳本函數?

由於我只會更新一些元素,所以整個頁面將不會被重新加載,並且替換元素上的某些事件將會丟失。

Re-Run application Javascript on ajax loaded content < ---這不是我一個解決方案...

我試圖加載的HTML和eval()他們採取的腳本。但是,這不會取代現有的功能,而是將其加倍。

我想更換,或不使用$(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 
    }; 
}); 
+0

我發現不完全是你想要的,但也許你可以在腳本源中找到一些有用的東西:http://www.arashkarimzadeh.com/component/content/article/17.html –

回答

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) { ... }); 

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

我希望這將有助於。

+0

非常感謝,但我的目的是替換或重新執行腳本..... – Till

+0

我的意思是:你可以將腳本封裝到函數中並重新執行(即重新調用)函數嗎? –

+0

由於我試圖創建一個接口可以取代任何地方,沒有辦法你知道什麼事件綁定在那個地方... – Till

相關問題