2017-08-28 81 views
2

我想改變的HTML內容的地方這個腳本是:編輯HTML的匿名函數放在

<script type="text/javascript"> 
    (function() { 
     $.ajax({ 
      url: "/api/request/something", 
      data: { 
       // ... 
      }, 
      success: function (data) { 
       // ... 
       var html = "..."; 
       $(this).parent().html(html); 
       } 
      } 
     }) 
    })(); 
</script> 

我把這個腳本到現有div元素,但這個腳本的執行不會改變該div元素的HTML。

+1

因爲'this'不會引用你想要的div –

+0

不知道你是否理解這是如何工作的。在嘗試修改元素或其內容之前,您需要選擇元素。 – Stuart

+0

你應該可以爲你的'script'標記設置一個'id'來選擇它並獲得它的父項(但是如果可以的話,甚至可以將id設置爲div本身) – Kaddath

回答

4

相反的this,使用將被設置爲document.currentScript.parentNode參數:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <script> 
 
    (function (elem) { 
 
     $.ajax({ 
 
      url: "https://jsonplaceholder.typicode.com/posts/1", 
 
      data: { 
 
       // ... 
 
      }, 
 
      success: function (data) { 
 
       // ... 
 
       var html = "display this"; 
 
       $(elem).html(html); 
 
      } 
 
     }) 
 
    })(document.currentScript.parentNode); // pass this value 
 
    </script> 
 
</div>

知不知道這是不是它通常所做的那樣。考慮給你的元素一些idclass和參考,在一個腳本,您在文檔的末尾位置:

$.ajax({ 
 
    url: "https://jsonplaceholder.typicode.com/posts/1", 
 
    data: { 
 
     // ... 
 
    }, 
 
    success: function (data) { 
 
     // ... 
 
     var html = "display this"; 
 
     $("#target").html(html); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="target"></div>

+0

智能答案是 –

1

關鍵字this指成功功能的範圍的ajax請求。您應該設置要更改的div的id屬性。

然後你可以改變它的innerHTML很多easyer。

HTML:

<div id="myDiv"></div> 

JS:

(function() { 
    $.ajax({ 
     url: "/api/request/something", 
     data: {}, 
     success: function (data) { 
      $('#myDiv').innerHTML = data.responseText; 
//    ^^^^^ use the id of the div you want to change 
      } 
     } 
    }) 
}); 

我希望能以某種方式幫助。