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。我可以只要求用户在每次包含模板时添加一个edtraunique_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>