2012-06-19 71 views
1

我使用下面的方法,以便插入外部HTML頁面到我的div:如何從外部html文件中運行JavaScript函數,該文件是動態加載到我的div中的?

 $.ajax({ 
      url: "myHTML.html", 
      method: 'GET', 
      success: function (data) { 
       $("#outputDiv").html(data); 
      }, 
      Error: function (err) { 
       alert("ERROR: " + err); 
      } 
     }); 

的正常工作, 的問題是,我想運行位於一些JavaScript函數「 myHTML.html「文件, 有沒有辦法做到這樣的事情?

感謝(=

+0

具體談談什麼源腳本是在其他文件,在腳本標籤位於在其他文件 – charlietfl

+1

這可能會幫助你:http://stackoverflow.com/questions/510779/calling-a-javascript-function-returned-from-a-ajax-response – Amar

+0

而且還http://stackoverflow.com/questions/4900460/how-to-run-jquery-in-ajax-response-page/4901322#4901322 – j08691

回答

0

它往往更容易保持在您加載內容到頁面的腳本。這個,如果你有一組都使用相同的AJX加載文件時尤其如此,並且所有調用相同的功能。這緩解了需要改變的代碼修改多個文件。

$.ajax({ 
     url: "myHTML.html", 
     method: 'GET', 
     success: function (data) { 
      $("#outputDiv").html(data); 
      /* new html exits so can run code here that affects it*/ 
      newHtmlAdded(); 
     }, 
     error: function (err) {/* note typo on capital "E" fixed*/ 
      alert("ERROR: " + err); 
     } 
    }); 

    function newHtmlAdded(){ 
     fixmFormStyle(); 
     addMyValidation(); 
     doSomethingElse(); 
    } 

否則,要認識到,已經發生在頁面加載到ready事件是很重要的。這意味着包裹在ready處理任何代碼將立即觸發,如果代碼位於遠程文件中的html之前e,它會在DOM中存在相應的html元素之前觸發,並且不會執行任何操作。放置在遠程文件將工作的HTML後

代碼,因爲HTML它是指將已經proceessed

+0

謝謝你們,但這不是我想要的。 我將有大約3或4個外部html文件,我將需要加載到不同的div ... 每個人都將包含一個具有相同名稱(「更新」)的函數。 我想不得不能夠調用每個html的更新函數 - 可以說我將html#1加載到div#1,並將html#2加載到div#2中 我需要有能力調用我的更新函數僅適用於HTML#1 (這些htmls中的參數和內部函數可能會彼此不同) 我希望我的問題現在更清晰 – user1322801

+0

這很容易在ajax的成功內部完成。 。使用你正在加載的元素的上下文,並且只在你運行你的代碼'$('#div1')時查看這個上下文中的html。load(url,function(){update(this)}) – charlietfl

+0

Thanks男人這就是我需要的一切(= – user1322801

相關問題