jQuery:如何检查元素是否具有某些CSS类/样式


85

我有一个div:

<div class="test" id="someElement" style="position: absolute"></div>

有什么方法可以检查某些元素:

$("#someElement") 

具有特定的类(在我的情况下为“测试”)。

或者,是否有方法检查en元素是否具有某种样式?在此示例中,我想知道元素是否具有“ position: absolute”。

非常感谢你!


14
不确定是不是问题或答案有误,但问题有style =“ test”,答案为class =“ test”
wheresrhys

1
我的猜测是,这个问题是错误的,因为他将错误答案标记为正确。但是无论如何,在看了票之后,我认为大多数人都在这里偶然找到了这个错误问题的正确答案……呃,如果有任何理由……我是说乔克普博士的答案。这就是为什么我至少在这里。
BrainSlugs83 2012年

Answers:



281

CSS样式是键值对,而不仅仅是“标签”。默认情况下,每个元素都分配有完整的CSS样式集,其中大多数是使用浏览器默认值隐式设置的,其中一些是在CSS样式表中显式重新定义的。

要获取分配给元素的特定CSS条目的值并进行比较:

if ($('#yourElement').css('position') == 'absolute')
{
   // true
}

如果未重新定义样式,则将获得该特定元素的浏览器默认值。


3
没有办法使用选择器吗?
BrainSlugs83 2012年

有了这个,您可以看到实际的属性是什么,我需要知道的是,是直接设置此属性还是它是从CSS样式/浏览器继承的?这可能吗?
ante.sabo 2012年

如果页面加载后DOM更改/对象的CSS值更改,该方案似乎不适用于该方案。知道如何在DOM加载后让它监视CSS更改吗?
Collarbone

@Collarbone您总是可以在文件加载后使用setTimeout()和clearTimeout()将调用延迟一秒钟左右。
probie


4

或者,如果您需要访问具有该属性的元素并且它不使用id,则可以采用以下路线:

$("img").each(function () {
        if ($(this).css("float") == "left") { $(this).addClass("left"); }
        if ($(this).css("float") == "right") { $(this).addClass("right"); }
    })

1

我找到了一种解决方案:

$("#someElement")[0].className.match("test")

但是我以某种方式相信有更好的方法!


1

问题是要求两种不同的东西:

  1. 元素具有特定的类
  2. 元素具有某些样式。

第二个问题已经回答。对于第一个,我会这样做:

if($("#someElement").is(".test")){
    // Has class test assigned, eventually combined with other classes
}
else{
    // Does not have it
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.