发现任何元素是否在jQuery中有任何类

时间:2013-01-31 17:22:31

标签: jquery html class loops

我继承了一些jQuery和HTML,需要查明是否有任何HTML元素具有任何值的类名。我已经阅读了几个线程和谷歌搜索,但找不到任何有用的东西。 所以在伪代码中我想要的是:

Loop through all HTML elements

If any of them have any class at all:
    Get their class name as a string

希望这有意义!

7 个答案:

答案 0 :(得分:12)

尝试:

$('*').each(function() {
    if ($(this).hasClass()) {
        var class_name = $(this).attr('class');
        // do something
    }
});

为什么你会想要这样做,我不知道。 非常效率低

答案 1 :(得分:12)

为了它的价值:

$(this).hasClass() 

始终返回 false

$("[class]") 

也不起作用,因为它返回

之类的元素
<p class=""> my p </p>

这里的jsfiddle:http://jsfiddle.net/JZ8LV/1/

<强>解决方案

$(this).hasClass('') 

为没有类的元素返回 true ,包括

形式的那些
<p class=""> my p </p>

所以

$('*').each(function() {
    if ($(this).hasClass('') === false) {
        $("body").append($(this).prop("tagName") + " has a proper class defined <br/>");
    }
});

返回所有定义了正确类别的标记

Jsfiddle:http://jsfiddle.net/2Rtj5/

答案 2 :(得分:6)

您可以使用以下内容:

$("[class]").each(function(){
   var className = $(this).attr("class");
})

Has Attribute Selector

演示:http://jsfiddle.net/L5WAV/1/(请参阅控制台中的结果 - 应找到两个div)

答案 3 :(得分:1)

var classObj = {};

$('*').each(function(){
    var cNames = this.className.split(' ');
    for(var i=0, l=cNames.length; i<l; i+=1){
        classObj[cNames[i]] = true;
    }
});

这会给你一个Object(classObj),每个文档的出现类都作为属性,因此如果文档中有相同类的元素,则类名不会多次出现。我真的不会这样做或者看到任何用例。

答案 4 :(得分:1)

要获取课程的所有元素,您可以使用$('*[class]')

$('*[class]').each(function(){
    // do what you want
});

您甚至可以使用$('*[class]').length轻松统计它们。

答案 5 :(得分:0)

不是一个直接的问题,但我需要它,因此它适用于未来的用户。

如果您想查找任何元素是否具有特定类,您可以使用此功能:

function find_any_element(className) {
    var found = false;
    $('*').each(function() {
        if ($(this).hasClass(className)) {
            var class_name = $(this).attr('class');
            alert("There is an element with this class: " + class_name);
            found = true;
        }
    });
    if(!found) {
        alert("No element with className '" + className + "' found.");
    }
}

答案 6 :(得分:0)

无需遍历元素:

if( jQuery( ".myClass" ).is( ":visible" ) )
{
    // do your thing
}

缺点是您的元素不能将display属性设置为none