6

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

Loop through all HTML elements

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

希望这是有道理的!

4

7 回答 7

14

尝试:

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

你为什么要这样做,我不知道。这是非常低效的

于 2013-01-31T17:23:48.910 回答
13

物有所值:

$(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/

于 2014-07-20T20:47:42.387 回答
6

你可以使用这样的东西:

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

有属性选择器

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

于 2013-01-31T17:28:51.630 回答
2

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

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

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

于 2013-01-31T17:30:57.800 回答
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),其中每个出现的文档类都作为属性,因此如果文档中存在具有相同类的元素,则类名不会多次显示。不过,我真的不会这样做,也不会看到任何用例。

于 2013-01-31T17:27:36.883 回答
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.");
    }
}
于 2015-11-10T22:10:45.437 回答
0

无需循环您的元素:

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

缺点是您的元素不能将display-property 设置为none

于 2020-05-15T07:24:51.643 回答