Получить имя класса с помощью jQuery
14 ответов
после получения элемента как объекта jQuery другими средствами, чем его класс, то
var className = $('#sidebar div:eq(14)').attr('class');
следует сделать трюк. Для ID используйте .attr('id')
.
Если вы находитесь внутри обработчика событий или другого метода jQuery, где элемент является чистым узлом DOM без оболочки, вы можете использовать:
this.className // for classes, and
this.id // for IDs
оба являются стандартными методами DOM и хорошо поддерживаются во всех браузерах.
лучше использовать .hasClass()
когда вы хотите проверить, имеет ли элемент определенный class
. Это потому, что, когда элемент имеет несколько class
это не тривиально, чтобы проверить.
пример:
<div id='test' class='main divhover'></div>
где:
$('#test').attr('class'); // returns `main divhover`.
С .hasClass()
мы можем проверить, если div
присвоен класс divhover
.
$('#test').hasClass('divhover'); // returns true
$('#test').hasClass('main'); // returns true
будьте осторожны , возможно , у вас есть класс и подкласс .
<div id='id' class='myclass mysubclass' >dfdfdfsdfds</div>
если вы используете предыдущие решения, у вас будет:
myclass mysubclass
Итак, если вы хотите иметь селектор класса сделайте следующее :
var className = '.'+$('#id').attr('class').split(' ').join('.')
и у вас будет
.myclass.mysubclass
теперь, если вы хотите выбрать все элементы, которые имеют тот же класс, такой как div выше:
var brothers=$('.'+$('#id').attr('class').split(' ').join('.'))
что означает
var brothers=$('.myclass.mysubclass')
обновление 2018
или может быть реализован с помощью vanilla javascript в 2 строках:
const { classList } = document.querySelector('#id');
document.querySelectorAll(`.${Array.from(classList).join('.')}`);
Это, чтобы получить второй класс на несколько классов, используя в элемент
var class_name = $('#videobuttonChange').attr('class').split(' ')[1];
если <div>
есть id
:
<div id="test" class="my-custom-class"></div>
...вы можете попробовать:
var yourClass = $("#test").prop("class");
если <div>
только class
можно попробовать:
var yourClass = $(".my-custom-class").prop("class");
если вы собираетесь использовать функцию split для извлечения имен классов, вам придется компенсировать потенциальные изменения форматирования, которые могут привести к неожиданным результатам. Например:
" myclass1 myclass2 ".split(' ').join(".")
производит
".myclass1..myclass2."
Я думаю, вам лучше использовать регулярное выражение, чтобы соответствовать набору допустимых символов для имен классов. Например:
" myclass1 myclass2 ".match(/[\d\w-_]+/g);
производит
["myclass1", "myclass2"]
регулярное выражение, вероятно, не полностью, но надеюсь, вы понимаете мою точку зрения. Такой подход уменьшает вероятность плохого форматирования.
для завершения Whitestock ответ (который я нашел) я сделал :
className = $(this).attr('class').match(/[\d\w-_]+/g);
className = '.' + className.join(' .');
и "myclass1 myclass2" результат будет '.операция myclass1 .myclass2'
Вы можете получить имя класса двумя способами :
var className = $('.myclass').attr('class');
или
var className = $('.myclass').prop('class');
<div id="elem" class="className"></div>
С Javascript
document.getElementById('elem').className;
С jQuery
$('#elem').attr('class');
или
$('#elem').get(0).className;
Если вы не знаете имя класса, но знаете идентификатор, вы можете попробовать следующее:
<div id="currentST" class="myclass"></div>
затем вызовите его, используя:
alert($('#currentST').attr('class'));
попробуй
HTML-код
<div class="class_area-1">
area 1
</div>
<div class="class_area-2">
area 2
</div>
<div class="class_area-3">
area 3
</div>
jQuery
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="application/javascript">
$('div').click(function(){
alert($(this).attr('class'));
});
</script>
Если вы хотите получить классы div, а затем хотите проверить, существует ли какой-либо класс, то простое использование.
if ( $('#div-id' ).hasClass( 'classname' ) ) {
// do something...
}
Эл.г;
if ( $('body').hasClass( 'home' ) ) {
$('#menu-item-4').addClass('active');
}
Если у нас есть один или первый div
элемент, который мы можем использовать
$('div')[0].className
в противном случае нам нужен id
элемента