2010-08-21 165 views
7

CSS:.divIm { border:1px solid red; }和代码行var borderColor = $(this).css("border-color")返回""。哪里不对?或者如果我使用jQuery,试图获得计算风格是否正确?jQuery.css()不返回设置为红色的边框颜色

更新: 下面是不希望按预期工作的代码。

$("div.divIm").mouseover(function() { 
    var borderColor = $(this).css("border-color"); 
    debugger; 
}); 

回答

10

由于四个边框中的每一个都可以具有不同的颜色,因此.css('border-color')无法工作,返回哪种颜色(即使它们完全相同)。

在大多数的情况下,所有边框的颜色是一样的,所以你可以做这样的:

$('div.divIm').mouseover(function() { 
    var borderColor = $(this).css('border-left-color'); 
    debugger; 
}); 

所以,你得到的左边框的颜色和应该是够了你需要。

+0

感谢您的建议,它有帮助! – despero 2010-08-21 20:51:28

-1
var borderColor = $(this).css("border-color") 

你需要表现出比这个多。但如果这是你所有的问题,那么this没有定义。

var borderColor = $('.divIm').css("border-color"); 

将是你所需要的。

+0

$( “div.divIm”)鼠标悬停(函数(){ VAR BORDERCOLOR = $( “divIm。 ”)的CSS(“ 边框颜色”);。 调试器; })。 我刚刚按照您的建议尝试过,但问题没有解决。 $(this)返回一个正确的对象。可能有另一种方式... – despero 2010-08-21 20:44:11

+0

在这种情况下,你可以在函数内部使用它。尝试使用borderColor而不是边框​​颜色,因为Gert建议使用 – Galen 2010-08-21 20:53:31

+0

它没有帮助。戴夫给出了正确的答案。 – despero 2010-08-21 20:58:34

2

您可以使用curStyles jQuery Plugin获得包含多个计算样式的计算样式。

+1

感谢您的回答;使用插件似乎对于这个问题来说太重了。虽然你可能是对的。 – despero 2010-08-21 20:47:17

+0

如果未在元素上设置所请求的样式属性,jQuery将返回计算样式。它使用* $。curCSS(elem,style,force)*,这是一个未记录的方法。 – 2010-08-21 20:54:44