2012-02-12 52 views
2

我希望默认的“CSS class”是黑色的,并且使用“selected”的这个选择功能时会有白色文本。我不知道我要去哪里错了使用jquery不改变的颜色

$(function() { 
    $('a.link').click(function() { 
     $('a.link').removeClass('selected'); 
     $(this).addClass('selected'); 
     $(this).css('color', 'white'); 
     $(this).addClass('result-holder'); 
     $(this).css('color', 'black'); 


    }); 
}); 

形象展示的问题:

enter image description here

http://imgur.com/AquDa

+2

我猜那是因为你在函数结束时将链接变回黑色? – 2012-02-12 07:28:53

+0

谢谢艾蒂安。但是,当我使用onClick向下移动时,上面的项目是“白色”,因为没有黑色。我遇到了问题,我希望默认颜色(除了选定的颜色)为黑色,并且选中的项目为白色,因为它在蓝色背景上。我希望我做出某种意义(对此是新的!) – 2012-02-12 07:31:41

+0

您正在使用CSS类的内联css。不是一个好主意。坚持其中之一。 – gdoron 2012-02-12 07:33:42

回答

1

这是你现有的与它做什么点击与类“链接”的任何锚标记任何时间解释代码:

$('a.link').removeClass('selected'); // remove 'selected' from all links 
$(this).addClass('selected');   // add 'selected' to clicked link 
$(this).css('color', 'white');   // turn clicked link 'white' 
$(this).addClass('result-holder');  // add 'result-holder' to clicked link 
$(this).css('color', 'black');   // turn clicked link 'black' 

您打开点击链接白色,然后把它在同一块代码中回到黑色,所以你永远不会看到它显示为白色。

我敢肯定你真正想要做的是如下:

$('a.link').removeClass('selected') // remove 'selected' from all links 
      .css('color', 'black');  // and make them black again 

$(this).addClass('selected')   // add 'selected' to clicked link 
     .css('color', 'white').   // and turn it 'white' 

(注意:如果调用一个jQuery对象,你可以在“链”起来,像$(this).addClass('selected').css('color','white');)

上的多个功能

我真的不知道你想要做什么'结果持有人'类,因为你现在的代码将它添加到点击链接,但不会从任何东西中删除它。如果你想将它添加到点击链接像$(this).addClass('result-holder')像你已经这样做。

请注意,您可以只需添加color:white;到你的“选择”类的定义,并在您的默认设置color:black;a.link造型简化这个:

a.link { 
    color : black; 
}  

a.selected { 
    /* your existing style settings here, then: */ 
    color : white; 
} 

这里有一个演示:http://jsfiddle.net/nnnnnn/6qURY/

+0

这里是我对代码改进的看法:http://jsfiddle.net/Qb3Yr/1/ – 2012-02-12 07:46:27

+0

和类的方法:http://jsfiddle.net/Qb3Yr/2/ – 2012-02-12 07:49:20

+0

我解决了这个问题。 2012-02-12 08:02:59

2

您将其更改为黑色再次...

$(this).css('color', 'white'); 
    $(this).addClass('result-holder'); 
    $(this).css('color', 'black'); // <==== 

这等于:

var color = 'white'; 
color = 'black'; 
alert(color); //black... 
+0

演示:http://jsfiddle.net/Qb3Yr/1/ – 2012-02-12 07:43:47

+0

@JaredFarrish。感谢演示。但我认为这很明显,他的代码有什么问题......=) – gdoron 2012-02-12 07:46:05

+0

我不太清楚你的评论是什么;它的字面意思是在实践中展示你在答案中展示的内容。如果你不希望它作为评论,我可以删除它,但它本身并不适合你。 – 2012-02-12 07:52:05