Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发现jQuery中是否有任何元素具有任何类_Jquery_Html_Class_Loops - Fatal编程技术网

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

发现jQuery中是否有任何元素具有任何类,jquery,html,class,loops,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 希望这是有意义的 试试看: $('*').each(function() { if ($(this

我继承了一些jQuery和HTML,需要找出是否有任何HTML元素具有任何值的类名。我读了一些文章,在谷歌上搜索了一下,但没有找到任何有用的东西。 所以在伪代码中,我想要的是:

Loop through all HTML elements

If any of them have any class at all:
    Get their class name as a string
希望这是有意义的

试试看:

$('*').each(function() {
    if ($(this).hasClass()) {
        var class_name = $(this).attr('class');
        // do something
    }
});
我不知道你为什么要这么做。它是非常低效的

var classObj={};
var classObj = {};

$('*').each(function(){
    var cNames = this.className.split(' ');
    for(var i=0, l=cNames.length; i<l; i+=1){
        classObj[cNames[i]] = true;
    }
});
$('*')。每个(函数(){ var cNames=this.className.split(“”);
对于(var i=0,l=cNames.length;i您可以使用如下内容:

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


演示:(请参见控制台中的结果-应找到两个div)

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

您甚至可以使用
$('*[class]')轻松地对它们进行计数。长度

值多少:

$(this).hasClass() 
总是返回false

也不起作用,因为它返回如下元素

<p class=""> my p </p>
对于不带类的元素(包括窗体的元素),返回true

<p class=""> my p </p>

我的p

所以

$('*')。每个(函数(){
if($(this).hasClass(“”)==false){
$(“body”).append($(this.prop(“标记名”)+“定义了正确的类
); } });
返回定义了正确类的所有标记


Jsfiddle:

不是一个直接的问题,但我需要它,所以这里是为未来的用户准备的

如果要查找任何元素是否具有特定类,可以使用以下函数:

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.");
    }
}

无需在元素上循环:

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

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

是的,这是一个相当繁重的操作。我打赌有更好的方法解决这个问题。谢谢:)这不是我特别想做的事情。我不是jQuery专家,但对于我继承的代码,我认为这可能是做我需要的事情和客户(他认为自己是一个有才华的业余程序员)的唯一方法需要。我已设法将类的数量减少到6个,因此我希望这将减少开销。再次感谢,我非常感谢。如果$(“*”)选择器不是“*”,则效率相当高。谢谢您抽出时间,我非常感谢:)谢谢你的时间,我也很感激:)谢谢你的时间,我很感激:)老兄,你太棒了。
<p class=""> my p </p>
$('*').each(function() {
    if ($(this).hasClass('') === false) {
        $("body").append($(this).prop("tagName") + " has a proper class defined <br/>");
    }
});
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.");
    }
}
if( jQuery( ".myClass" ).is( ":visible" ) )
{
    // do your thing
}