我继承了一些jQuery和HTML,需要查明是否有任何HTML元素具有任何值的类名。我已经阅读了几个线程和谷歌搜索,但找不到任何有用的东西。 所以在伪代码中我想要的是:
Loop through all HTML elements
If any of them have any class at all:
Get their class name as a string
希望这有意义!
答案 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");
})
演示: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