2017-08-28 63 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 
      } 
     } 
    }) 
}); 

我希望能以某种方式帮助。