jQuery选择当前脚本标记

App*_*eer 8 javascript jquery jquery-selectors

有人知道是否有可能在没有任何其他选择器定义的情况下用jQuery选择当前的脚本标签?

<script type="text/javascript">
$(document).ready( function(){
    // Here i need to select the current tag "<script ..."
})
</script>
Run Code Online (Sandbox Code Playgroud)

Kar*_*non 9

在文档就绪方法之外,只需$('script').last();:

<script type="text/javascript">
var currentScript = $('script').last();
$(document).ready( function(){
    //Use the variable currentScript here
})
</script>
Run Code Online (Sandbox Code Playgroud)

或者只是给你的脚本一个id.

  • ↑它是执行时的最后一个,这就是为什么代码必须在`ready`事件回调之外. (6认同)
  • 我认为如果原始脚本标签设置了“defer”或“async”属性,这将不起作用。 (2认同)
  • 这根本没有意义.它假设您的脚本标记是页面中的最后一个标记. (2认同)

Vin*_*ler 7

实现这一目标的最可靠方法是:

<script>
 (function(script){
    //do whatever you want with script here...
 })(document.currentScript);
</script>
Run Code Online (Sandbox Code Playgroud)

它比其他解决方案更强大,因为您也可以在文档加载后使用它。此外,它不需要定义变量(如果您有多个脚本标签,这可能是一个问题,因为您不能重用相同的变量名称)。使用 JQuery:

<script>
     (function(script){
        $(document).ready(function(){
            // do whatever you want after the DOM as loaded here...
        });
     })(document.currentScript);
</script>
Run Code Online (Sandbox Code Playgroud)


小智 5

我认为这是最快的方式

<script type="text/javascript">
    var scripts = document.getElementsByTagName("script");
    var thisScript = scripts[scripts.length - 1];
</script>
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢非 jQuery 方法 (2认同)
  • 如果页面上有多个脚本标签怎么办?这不会选择围绕当前 javascript 的脚本标记。它只是选择页面上的最后一个。 (2认同)
  • @JakeWilson 正如 Karl-André Gagnon 的类似答案所评论的那样,当浏览器遇到此脚本标记时,它是页面上的最后一个标记(只要未设置“defer”或“async”)。 (2认同)