如何查找元素的所有可能的CSS样式和属性?

时间:2013-04-14 10:29:37

标签: javascript jquery css dom

有一些方法可以获取使用样式或类属性设置的DOM元素的所有CSS样式。这很好用,但如果没有将类设置为this,则无法找到可以设置为此元素的类。

现在我正在寻找一种方法来获取可能设置为此DOM元素的所有CSS类和样式。我已经尝试过使用RegExp,但它并不完美,因为我不确定如何搜索文档样式节点并将其与DOM节点进行比较。怎么可能?

我需要的例子:

<div class="set">
  <p class="anotherclass">some text</p>
  <p class="otherClass">some text</p>
</div>

css:

div.set { /* some css */ }
div.notSet { /* you could find me but not want to set me */ }
.autoSet_findMeToSet { /* set me to all tags with jquery */ }
div.autoSet_setMeNow { /* set me to the div tag with jquery */ }
div > p:first-child.autoSet_yeah { /* set me to the first p tag with jquery */
/* and so on */

正如你所看到的,我想用jQuery设置所有带有特殊名称的css类。使用regexp我可以找到类名,但我不知道如何检查它需要设置哪个dom元素(html标签)......

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用jQuery $ .contains()

检查找到的元素是否在其他元素中

此处有关如何执行此操作的详细信息:http://api.jquery.com/jQuery.contains/

因此,对于您的示例,要查找某些已找到的类是否在set内,您可以执行以下操作:

$.each(foundElement, function(index, domElement){
    if($.contains(domElement, $('.set'))) {
        // domElement is inside the container with 'set' class
    } else {
        // domElement is not inside the container with 'set' class
    }
});

答案 1 :(得分:0)

如果我理解正确的问题:

$(".class *")

选择具有类class

的元素内的所有元素
$(".class").find(element).length === 0

检查元素是否在具有类class

的元素内