2014-04-03 36 views
1

它可能愚蠢的noob一般的JavaScript問題,但我一直試圖找到一個答案天。我可以說我使用jquery插件,將對象作爲設置(我將在flexbox上顯示,名爲fluixbox),我希望它從html中獲取一些設置。jQuery的插件對象配置與.data()

HTML:

<a data-color="rgba(40,25,255,1)"> My colorful image </a> 

的javascript:

$("a").fluidbox({ overlayColor: $(this).data("color") }) 

我認爲它不言explenatory,我試圖做的一切。我認爲問題必須與範圍有關。如果我只是創建返回rgba(40,25,255,1)的函數,並將其替換$(this).data(「color」),那麼它確實可行。

謝謝你的回覆。

+2

它是作用域,在屬性中使用'this'不是指'a',而是默認爲全局'window'對象。您需要將顏色分配給變量,然後將該變量用作值。 – PlantTheIdea

回答

2

當您在該範圍中使用$(this)時,您不是指錨點,而是指的是Window對象。

您可以使用:

$("a").each(function() { 
    $(this).fluidbox({ overlayColor: $(this).data("color") }); 
}); 

這應該工作,因爲函數裏面的「每一個」方法更改範圍,你遍歷每個一個DOMElement。

+0

謝謝!這工作,但是因爲你的解決方案,我發現我曾嘗試過同樣的事情,並傾銷它。事實證明,這個粒子插件Fluidbox將選項更改爲全局應用的類,因此每次只重寫該選項,而最新的重寫基本適用於所有內容。 我將不得不改變方法。無論如何,這個答案推動了我的努力,是我的問題的解決方案。 非常感謝。 – Krisa