2013-03-15 96 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