将参数传递到外部js脚本的最佳方法

时间:2015-03-08 19:04:55

标签: javascript jquery

如何使用jQ将参数传递给外部jScript?

我能够正常工作:

<script
     id = 'myScript' 
    data-myParm =' my value'
    src = './myScript.js' >
</script>

myScript.js:

document.getElementById('myScript').getAttribute('data-myParm')

但我认为我已经看到了一种非常简单(和更好)的方法来使用jQuery,而不是使用脚本ID。我也不想使用像

这样的东西
<script src='./myScript.js?myParm=my%value&'> </script>

我试过类似$ .data('myParm')和$('script')。data('myParm')但没有成功。

建议?

2 个答案:

答案 0 :(得分:1)

如果您的脚本是同步加载的,那么每个脚本将是最初运行时DOM中的最后一个脚本。

所以你应该能够做到这一点:

var param = $('script').last().data('myparm');

或等效地:

var scripts = document.getElementsByTagName('script');
var param = scripts[scripts.length - 1].getAttribute('data-myparm');

请注意,您将执行任何文档就绪处理程序的外部或在最初加载脚本后执行的任何内容。

修改 HTML5 spec表示data-*属性应该被视为全部小写,看起来jQuery的.data(...)只有在提供的字符串时才会起作用全部是小写的,所以我建议始终使用所有小写data-*属性。

答案 1 :(得分:1)

尝试

&#13;
&#13;
var data = $("script").filter(function(i, el) {
   return !!$(el).data().myparm
}).data().myparm || void 0;

console.log(data)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<script
    id = 'myScript' 
    data-myParm =' my value'
    src = '' >
</script>
&#13;
&#13;
&#13;