2012-02-20 51 views
0

我在我的網頁上有一個div,如果有人懸停在它上面,我想更改父div中所有鏈接上文本的顏色。當有懸停時,我稱之爲功能突出顯示。但是,下面的代碼似乎不起作用。我覺得有一個語法問題,因爲highlight2工作得很好(但並沒有達到我的改變文字顏色的主要目標。使用jQuery更改CSS的格式

function highlight(el) { 
    $(el).parent().css('a:link', "{color:#28A8C8;}"); 
    $(el).parent().css('a:visited', "{color:#28A8C8;}"); 
} 

function highlight2(el) { 
    $(el).parent().css("background", "#FFFFFF");  
} 

回答

2

jQuery的CSS()方法(設置時),需要的第一個參數是一個css屬性,第二個是一個值:http://api.jquery.com/css/。你正在傳遞你想要修改的節點類型而不是你想修改的css屬性如果你想改變裏面鏈接的顏色$(el).parent()那麼你應該使用:

function highlight(el) { 
    $(el).parent().children('a:link').css('color', "#28A8C8"); 
    $(el).parent().children('a:visited').css('color', "#28A8C8"); 
} 

如果你想改變的$(el).parent()本身的顏色(假設$(el).parent()是一個鏈接),那麼你只需要:

$(el).parent().css('color', "#28A8C8"); 

(無需訪問和未訪問過,因爲你設置的是相同的顏色)

+0

+1,但是如果存在不是父div的直接子元素的錨元素,OP可能希望使用'.find()'而不是'.children()'。 – nnnnnn 2012-02-20 00:38:54

1

正如本d說,你有一個具體的區分語法問題,因爲jQuery的.css()函數期望第一個參數是CSS屬性的名稱,而不是選擇器,第二個參數應該是適用的值。

我想提出一個更好的方式做同樣的事情,但:添加類似以下內容到你的樣式表:

div a:link, div a:visited { color:#defaultcolorhere } 
div.highlight a:link, div.highlight a:visited { color:#28A8C8 } 

然後,你可以通過添加「亮點」的風格來改變顏色父DIV:

$(".hoverdiv").hover(function() { 
    $(this).parent().addClass("highlight"); 
}, function() { 
    $(this).parent().removeClass("highlight"); 
}); 

(如果給你徘徊在一個通用類的div如「hoverdiv」這讓他們很容易選擇)

演示:http://jsfiddle.net/zSuS8/