如果我们有代码:
<div id="myDiv" class="myClass myClass2"></div>
要使用 jQuery 获取类名,我们可以定义并使用一个简单的插件方法:
$.fn.class = function(){
return Array.prototype.slice.call( $(this)[0].classList );
}
或
$.fn.class = function(){
return $(this).prop('class');
}
使用方法会是:
$('#myDiv').class();
我们必须注意,它会返回一个类列表,这与本地方法 element.className 不同,它只返回附加类的第一个类。因为通常元素有多个附加的类,我建议你不要使用这个原生方法,而是使用 element.classlist 或上面描述的方法。
它的第一个变体将返回一个类列表作为一个数组,第二个作为一个字符串 - 用空格分隔的类名:
// [myClass, myClass2]
// "myClass myClass2"
另一个重要的注意事项是这两个方法以及 jQuery 方法
$('div').prop('class');
如果我们使用指向许多其他元素的更常见的选择器,则仅返回 jQuery 对象捕获的第一个元素的类列表。在这种情况下,我们必须标记元素,我们想通过使用一些索引来获取他的类,例如
$('div:eq(2)').prop('class');
这还取决于您需要对这些类做什么。如果您只想在具有此 id 的元素的类列表中检查一个类,您应该使用方法“hasClass”:
if($('#myDiv').hasClass('myClass')){
// do something
}
如上面的 cmets 中所述。但是,如果您可能需要将所有类作为选择器,请使用以下代码:
$.fn.classes = function(){
var o = $(this);
return o.prop('class')? [''].concat( o.prop('class').split(' ') ).join('.') : '';
}
var mySelector = $('#myDiv').classes();
结果将是:
// .myClass.myClass2
例如,您可以让它动态创建特定的重写 css 规则。
问候