2015-03-08 54 views
0

如何使用jQ將參數傳遞到外部jScript?將參數傳遞到外部js腳本的最佳方法

我能得到這個工作的罰款:

<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> 

我想是這樣。數據$(「myParm」)和$(「腳本」)。沒有成功的數據(「myParm」)。

意見建議?

+0

'很容易的(更好的)方式,使用jQuery'做......。 – JFK 2015-03-08 19:18:30

+0

也許jQuery不一定「更好」,但它更有趣。 – edwardsmarkf 2015-03-08 20:47:42

回答

1

如果您的腳本正在同步加載,那麼每個腳本將是最初運行時DOM中的最後一個腳本。

所以,你應該能夠做到這一點:

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

或等價:

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

請注意,你可以這樣做以外的任何文件準備好處理程序或任何會後執行的該腳本最初加載。

編輯:HTML5 specdata-*屬性應全部用小寫來處理,它看起來像jQuery的,如果提供的字符串全部小寫.data(...)只會工作,所以我建議使用所有小寫整個data-*屬性。

+0

$('script')。last()。data('myparm')工作並且謝謝 - 我不確定爲什麼需要小寫。也許數據衝刺需要它? – edwardsmarkf 2015-03-08 21:25:35

+0

@edwardsmarkf是的,看起來像HTML5規範說'data- *'屬性應該被視爲小寫([link](http://www.w3.org/html/wg/drafts/html/master/dom)。 html#embedding-custom-non-visible-data-with-the-data - * - attributes)),所以你最好在你的HTML和JS中使用全部小寫。順便說一句,你接受的答案是我的一個明顯的副本(你可以檢查時間戳和編輯歷史,如果你懷疑這一點)。如果這確實回答你的問題,你能接受我的嗎? – JLRishe 2015-03-09 00:46:56

+0

對不起 - 以爲我確實接受你的答案。你的答案確實是第一次。但無論哪種方式,讓它工作非常令人興奮。並再次感謝你幫助我。出於某種原因,我的問題本身被拒絕了,儘管我的確研究了這個問題很多,而且我認爲這個問題是非常相關的,因爲考慮到很少有

1

使用jQuery不一定比使用JavaScript的香草 「更好」 的嘗試

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

 
console.log(data)
<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>

+0

})。data()。myparm || void 0; - - - Uncaught TypeError:無法讀取未定義的屬性'myparm' – edwardsmarkf 2015-03-08 21:33:56

+0

@edwardsmarkf http://jsfiddle.net/yk4tzxt6/1/ – guest271314 2015-03-08 21:42:13

相關問題