2014-04-03 34 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