Если у нас есть код:
<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');
Это также зависит от того, что вам нужно делать с этими классами. Если вы хотите просто проверить класс в списке классов элемента с этим идентификатором, вам просто нужно использовать метод hasClass:
if($('#myDiv').hasClass('myClass')){
// do something
}
как указано в комментариях выше. Но вам может потребоваться взять все классы как селектор, а затем использовать этот код:
$.fn.classes = function(){
var o = $(this);
return o.prop('class')? [''].concat( o.prop('class').split(' ') ).join('.') : '';
}
var mySelector = $('#myDiv').classes();
Результат будет:
// .myClass.myClass2
и вы можете получить его для динамического создания, например, конкретного правила переписывания CSS.
Привет