亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

追加后,jQuery .load()/ .ajax()在返回的HTML中不執行javascript

追加后,jQuery .load()/ .ajax()在返回的HTML中不執行javascript

守候你守候我 2019-11-20 09:44:46
我嘗試使用.load()和$.ajax獲取一些需要附加到容器的HTML,但是當我將其附加到元素時,返回的HTML中的Javascript不會被執行。使用.load():$('#new_content').load(url+' #content > *',function() {    alert('returned');});我也嘗試過切換到$ .ajax呼叫。然后,我從返回的HTML中提取了腳本,然后將其附加到了容器中,但是同樣的問題,在這種情況下,JS沒有被執行,甚至沒有附加,據我所知,試圖將a附加<script>到DOM元素像這樣皺眉嗎?使用$.ajax:$.ajax({ url: url }).done(function(response) {    var source  = $("<div>").html(response).find('#overview_script').html();    var content = $("<div>").html(response).find('#content').html();    $('#new_content').html(content);    $('<script>').appendTo('#new_content').text(source).html();});理想情況下,在附加HTML之后,我將在回調中運行此javascript,但是將變量設置為從控制器返回的值。因此,在總結,我想獲得一些HTML包含JS說的是HTML已經被附加后運行的需要,但我一直在使用沒有運氣.load()或$.ajax()作為在返回的HTML要么消失劇本追加它,或者它根本不執行。
查看完整描述

3 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

當load()與片段選擇器一起使用時,腳本元素將在添加片段之前被剝離,因此腳本將不會執行。


使用不帶后綴選擇器表達式的URL調用.load()時,將在刪除腳本之前將內容傳遞給.html()。這將在腳本塊被丟棄之前執行它們。但是,如果使用附加到URL的選擇器表達式來調用.load(),則在更新DOM之前會刪除腳本,因此不會執行這些腳本。兩種情況的示例如下所示:


所以嘗試


$.get('partial.html', function(result){

    $result = $(result);


    $result.find('#content').appendTo('#new_content');

    $result.find('script').appendTo('#new_content');

}, 'html');


查看完整回答
反對 回復 2019-11-20
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

如果知道要執行的腳本是什么,則可以在ajax響應之外的其他地方定義腳本,然后從回調中調用它。所以代替:


$('#new_content').load(url+' #content > *',function() {alert('returned');});

您可以使用


$('#new_content').load(url+' #content > *',function() {my_function(my_param);});


查看完整回答
反對 回復 2019-11-20
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

這個代碼怎么樣


$('#new_content').append($('<script>').html(source));

或者您可以簡單地將JavaScript內容移動到單獨的文件中,然后使用


$.getScript("url to js file");

或只是使用,


eval(source); 


查看完整回答
反對 回復 2019-11-20
  • 3 回答
  • 0 關注
  • 998 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號