2013-03-15 78 views
-1

我有以下设置来更改某个类中链接的颜色。由于某种原因,它不起作用。我确实需要保持这种结构,我正在做的事情。默认情况下,按照正在工作的CSS,链接的颜色是白色的。只是更改链接的jQuery不起作用。jQuery通过CSS var

var link_colour = "#CCC"; 

function linkcolor() { 
$("[class='navLink']").css("color",link_colour); 
} 
window.onload = linkcolor; 

<ul> 
<li><a class="navLink" href="#"><img src="foo1.png" />xyz</a></li> 
<li><a class="navLink" href="#"><img src="foo2.png" />abc</a></li> 
</ul> 

回答

5

如果您正在使用jQuery你永远要使用window.onload = fn。请使用$(document).ready(fn)或简称为$(fn)

$(linkcolor); 

我猜这个代码在window.onload事件触发后运行的,所以你的事件处理程序的永远不会执行。 jQuery将通过立即触发该功能来处理此情况,如果事件已经发生,确保代码得到执行。

See it work here


其他的答案是说$('.navLink')更好是正确的为好。但这只是选择器的简写,应该可以正常工作。你应该改变它,但这不是问题。

+0

哇。谢谢!我一直在为此奋斗了近一个星期,现在它工作了! – rhslogic 2013-03-16 14:16:36

0

我会用这样的选择:

$(function(){ 
var $color = '#CCC'; 
$('.navLink').css('color',$color); 
}); 
1

用途:

$('.navLink') 

这将正常工作,选择与他们的类属性的所有元素设置为navLink

+0

而'$(“[class ='navLink']”)'不会? – Musa 2013-03-15 23:33:14

+0

只有当你这样做时,它才会起作用:$('* [class =“navLink”]')或$('a [class =“navLink”]'),但对于类不是推荐的方式。 – Arda 2013-03-15 23:37:02

+0

@Arda它将工作,无需修改。 – Musa 2013-03-15 23:48:45

1

这里你应该如何用jQuery友好的术语表达这一点:

var link_colour = '#CCC'; 
$(document).ready(function() { 
    $('.navlink').css('color', link_colour); 
}); 
+0

这和我的区别是什么? $ CCC也不是一种颜色。 – Arda 2013-03-15 23:31:01

+0

@Arda除了我在全局范围内有'link_colour'变量之外,这里真的没有什么显着区别(只是为了匹配原始问题中这个变量的范围,因为我不确定它是否在别处使用 - 可能只在功能范围内有足够的范围)。我想我们只是在同一时间回答,所以我还没有看到你的发布。 – 2013-03-16 00:13:44

0

那里有三点。

1)使用$(文件)。就绪

您正在使用window.reload,在这种情况下,使用$(文件)。就绪。

$(document).ready(function(){ 
// My code 
}); 

2)使用的.class

不要使用[类= ''],则使用的.class代替。

$('.navLink') 

这是我的建议,我的回答您的问题!

+0

你不需要循环,这是过度杀伤:http://jsfiddle.net/37wVk/ – Arda 2013-03-15 23:40:30

+0

好吧,所以从答案中删除:) – Spamdark 2013-03-15 23:41:08