Javascript 保持脚本元素独立

Javascript 保持脚本元素独立,javascript,jquery,html,django,Javascript,Jquery,Html,Django,简短版本:如何保持不同元素的内容相互独立 长版本:我有一个django模板,看起来有点像这样: <div class="app-container"> <script src="app.js"></script> <script> $(function() { app_init($('.app-container')); // app_init is defined in app.ja }); </

简短版本:如何保持不同
元素的内容相互独立

长版本:我有一个django模板,看起来有点像这样:

<div class="app-container">
  <script src="app.js"></script>
  <script>
    $(function() {
        app_init($('.app-container')); // app_init is defined in app.ja
    });
  </script>
</div>

如果模板在一个页面中被多次使用,这将不起作用,因为
thisscript
变量在它们之间是通用的,因此它始终是页面中最后一个被处理的
div.app-container

这里有一种技术可以起作用。您必须解决全局变量问题


JS-Bin
var thisScript=[];
一些文本
一个

thisScript.push(document.currentScript); 控制台日志(1); $(函数(){ //app_init($('.app container');//app_init在app.js中定义 }); 二审 两个

thisScript.push(document.currentScript); 控制台日志(2); $(函数(){ //警报(脚本); //app_init(script);//app_init在app.js中定义 }); 这是糟糕的html 最后

thisScript.push(document.currentScript); 控制台日志(3); $(函数(){ /**/ }); log(thisScript);
您的最终目标是什么?看起来你的代码做了它应该做的,但不是你想要的。你想达到什么目标?如果你需要唯一的元素,你可以在每个元素上使用一个id。好吧,基本上就是tin上写的。我希望能够编写一个django模板,其中包括一些html标记和一些操纵这些标记的脚本,而不必在每次包含模板时为标记分配唯一的ID。我可以只要求用户在每次包含模板时添加一个edtra
unique_id
参数,但这很烦人,如果他们忘记这样做,就会自动失败,而且看起来应该是不必要的-我应该能够获得包含此脚本标记的
div
标记的引用。请参阅问题的更新;这在文档中只起一次作用,如果同一模板被多次使用,则不起作用。“全局变量问题”确实是个问题。我对django不熟悉。模板是如何添加的?Django的模板系统允许您包含另一个模板-
{%include'other_template.html%}
,如果有帮助的话。无论如何,django在这里是一个分散注意力的地方。问题是如何存储对当前脚本的引用,以便可以在document onReady函数中以一种可以在单个页面中重复的方式使用它。因此,您仍然有一个包含各个实例的全局实例。请让我知道这是否有效。我不确定这有什么帮助-然后你必须知道每次包含脚本时要使用的数组索引,这是完全相同的问题。
<div class="app-container">
  <script>
    var thisscript = document.currentScript;
    $(function() {
      app_init($(thisscript).closest('.app-container'));
    });
  </script>
</div>