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

Kev*_*Kev 6 html jquery loops class

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

Loop through all HTML elements

If any of them have any class at all:
    Get their class name as a string
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的!

jac*_*per 14

尝试:

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

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

  • 是的,这是一个非常繁重的操作.我敢打赌,有一个更好的方法来解决这个问题. (5认同)

fwi*_*wiw 12

物有所值:

$(this).hasClass() 
Run Code Online (Sandbox Code Playgroud)

总是返回false.

$("[class]") 
Run Code Online (Sandbox Code Playgroud)

也不起作用,因为它返回像

<p class=""> my p </p>
Run Code Online (Sandbox Code Playgroud)

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

方案:

$(this).hasClass('') 
Run Code Online (Sandbox Code Playgroud)

对于没有类的元素(包括表单的元素)返回true

<p class=""> my p </p>
Run Code Online (Sandbox Code Playgroud)

所以

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

返回定义了适当类的所有标记.

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


Vik*_* S. 6

你可以使用这样的东西:

$("[class]").each(function(){
   var className = $(this).attr("class");
})
Run Code Online (Sandbox Code Playgroud)

有属性选择器

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