jQuery中是否有一种方法可以循环遍历或分配给数组中所有被分配给元素的类?
ex.
<div class="Lorem ipsum dolor_spec sit amet">Hello World!</div>
我将寻找一个“特殊”类,如上面的“dolor_spec”。我知道我可以使用hasClass(),但实际的类名可能并不一定知道。
jQuery中是否有一种方法可以循环遍历或分配给数组中所有被分配给元素的类?
ex.
<div class="Lorem ipsum dolor_spec sit amet">Hello World!</div>
我将寻找一个“特殊”类,如上面的“dolor_spec”。我知道我可以使用hasClass(),但实际的类名可能并不一定知道。
当前回答
问题是Jquery是用来做什么的。
$('.dolor_spec').each(function(){ //do stuff
为什么没有人给出.find()作为答案?
$('div').find('.dolor_spec').each(function(){
..
});
非ie浏览器也有classList:
if element.classList.contains("dolor_spec") { //do stuff
其他回答
为什么没有人简单的上市。
$(element).attr("class").split(/\s+/);
编辑:分裂/\s+/而不是' '修复@MarkAmery的反对。(谢谢@YashaOlatoto。)
有点晚了,但是使用extend()函数可以让你在任何元素上调用“hasClass()”,例如: var hasClass = $('#divId').hasClass(' someeclass ');
(function($) {
$.extend({
hasClass: new function(className) {
var classAttr = $J(this).attr('class');
if (classAttr != null && classAttr != undefined) {
var classList = classAttr.split(/\s+/);
for(var ix = 0, len = classList.length;ix < len;ix++) {
if (className === classList[ix]) {
return true;
}
}
}
return false;
}
}); })(jQuery);
试试这个。这将从document的所有元素中获得所有类的名称。
$(document).ready(function() {
var currentHtml="";
$('*').each(function() {
if ($(this).hasClass('') === false) {
var class_name = $(this).attr('class');
if (class_name.match(/\s/g)){
var newClasses= class_name.split(' ');
for (var i = 0; i <= newClasses.length - 1; i++) {
if (currentHtml.indexOf(newClasses[i]) <0) {
currentHtml += "."+newClasses[i]+"<br>{<br><br>}<br>"
}
}
}
else
{
if (currentHtml.indexOf(class_name) <0) {
currentHtml += "."+class_name+"<br>{<br><br>}<br>"
}
}
}
else
{
console.log("none");
}
});
$("#Test").html(currentHtml);
});
下面是工作示例:https://jsfiddle.net/raju_sumit/2xu1ujoy/3/
对于image类型的元素,我也遇到了类似的问题。我需要检查元素是否属于特定的类。首先我尝试了:
$('<img>').hasClass("nameOfMyClass");
但我得到了一个漂亮的“这个函数不适用于这个元素”。
然后我在DOM资源管理器上检查了我的元素,我看到了一个可以使用的非常好的属性:className。它包含元素中所有类的名称,用空格分隔。
$('img').className // it contains "class1 class2 class3"
一旦你得到这个,就像往常一样分割字符串。
在我的情况下,这是有效的:
var listOfClassesOfMyElement= $('img').className.split(" ");
我假设这将与其他类型的元素(除了img)一起工作。
希望能有所帮助。
var classList = $(element).attr('class').split(/\s+/);
$(classList).each(function(index){
//do something
});