Eu quero obter o nome da classe usando jQuery
E se tiver um id
<div class="myclass"></div>
this.className
funciona sem jquery (voltaria "myclass"
no exemplo acima)
Eu quero obter o nome da classe usando jQuery
E se tiver um id
<div class="myclass"></div>
this.className
funciona sem jquery (voltaria "myclass"
no exemplo acima)
Respostas:
Depois de obter o elemento como objeto jQuery por outros meios que não sua classe, então
var className = $('#sidebar div:eq(14)').attr('class');
deve fazer o truque. Para o uso do ID .attr('id')
.
Se você estiver dentro de um manipulador de eventos ou outro método jQuery, em que o elemento é o nó DOM puro sem wrapper, poderá usar:
this.className // for classes, and
this.id // for IDs
Ambos são métodos DOM padrão e são bem suportados em todos os navegadores.
if(className.indexOf(' ') !== -1){throw new Error('Uh-oh! More than one class name!');}
.attr('class')
e combiná- if(className.indexOf('Class_I_am_Looking_For') > = 0)
lo, poderá verificar facilmente a existência de uma classe específica e ainda lidar com várias classes.
if(className.indexOf('Class_I_am_Looking_For') > = 0)
também irá corresponder"This_Is_Not_the_Class_I_am_Looking_For"
É melhor usar .hasClass()
quando você deseja verificar se um elemento tem um determinado class
. Isso ocorre porque quando um elemento tem vários class
, não é trivial verificar.
Exemplo:
<div id='test' class='main divhover'></div>
Onde:
$('#test').attr('class'); // returns `main divhover`.
Com .hasClass()
podemos testar se o div
tem a classe divhover
.
$('#test').hasClass('divhover'); // returns true
$('#test').hasClass('main'); // returns true
.is('.divhover')
Cuidado, talvez você tenha uma classe e uma subclasse.
<div id='id' class='myclass mysubclass' >dfdfdfsdfds</div>
Se você usar soluções anteriores, terá:
myclass mysubclass
Portanto, se você deseja ter o seletor de classe , faça o seguinte:
var className = '.'+$('#id').attr('class').split(' ').join('.')
e você terá
.myclass.mysubclass
Agora, se você deseja selecionar todos os elementos que possuem a mesma classe, como div acima:
var brothers=$('.'+$('#id').attr('class').split(' ').join('.'))
que significa
var brothers=$('.myclass.mysubclass')
OR pode ser implementado com javascript vanilla em 2 linhas:
const { classList } = document.querySelector('#id');
document.querySelectorAll(`.${Array.from(classList).join('.')}`);
'.'+$('#id').attr('class').split(/[ \n\r\t\f]+/).join('.')
porque espaço, Tab, LF, CR e FF podem separar classes. ( .split()
Também aceita expressões regulares.)
'.'+$('#id').attr('class').split(/\s+/).join('.')
seria mais conciso, não seria? Ou seria algo que eu não estou pensando?
.attr('class').trim().split(...)
você pode simplesmente usar,
var className = $('#id').attr('class');
Se você <div>
possui id
:
<div id="test" class="my-custom-class"></div>
...podes tentar:
var yourClass = $("#test").prop("class");
Se o seu <div>
tiver apenas um class
, você pode tentar:
var yourClass = $(".my-custom-class").prop("class");
Se você usar a função de divisão para extrair os nomes das classes, precisará compensar possíveis variações de formatação que possam produzir resultados inesperados. Por exemplo:
" myclass1 myclass2 ".split(' ').join(".")
produz
".myclass1..myclass2."
Acho melhor você usar uma expressão regular para corresponder ao conjunto de caracteres permitidos para nomes de classe. Por exemplo:
" myclass1 myclass2 ".match(/[\d\w-_]+/g);
produz
["myclass1", "myclass2"]
A expressão regular provavelmente não está completa, mas espero que você entenda meu argumento. Essa abordagem atenua a possibilidade de formatação incorreta.
Para completar a resposta do Whitestock (que foi a melhor que encontrei), fiz:
className = $(this).attr('class').match(/[\d\w-_]+/g);
className = '.' + className.join(' .');
Portanto, para "minhaclasse1 minhaclasse2", o resultado será '.myclass1 .myclass2'
Você pode obter o nome da classe de duas maneiras:
var className = $('.myclass').attr('class');
OU
var className = $('.myclass').prop('class');
<div id="elem" class="className"></div>
Com Javascript
document.getElementById('elem').className;
Com jQuery
$('#elem').attr('class');
OU
$('#elem').get(0).className;
Se você não souber o nome da classe, MAS você souber o ID, poderá tentar o seguinte:
<div id="currentST" class="myclass"></div>
Em seguida, chame-o usando:
alert($('#currentST').attr('class'));
Se você deseja obter classes de div e depois verificar se existe alguma classe, use simples.
if ( $('#div-id' ).hasClass( 'classname' ) ) {
// do something...
}
por exemplo;
if ( $('body').hasClass( 'home' ) ) {
$('#menu-item-4').addClass('active');
}
Tente
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>
se temos único ou queremos primeiro div
elemento, podemos usar
$('div')[0].className
caso contrário, precisamos de um id
desse elemento
Se tivermos um código:
<div id="myDiv" class="myClass myClass2"></div>
para pegar o nome da classe usando jQuery, poderíamos definir e usar um método simples de plug-in:
$.fn.class = function(){
return Array.prototype.slice.call( $(this)[0].classList );
}
ou
$.fn.class = function(){
return $(this).prop('class');
}
O uso do método será:
$('#myDiv').class();
Temos que notar que ele retornará uma lista de classes, diferente do método nativo element.className, que retorna apenas a primeira classe das classes anexadas. Como geralmente o elemento possui mais de uma classe, recomendamos que você não use esse método nativo, mas o element.classlist ou o método descrito acima.
A primeira variante retornará uma lista de classes como uma matriz, a segunda como uma string - nomes de classes separados por espaços:
// [myClass, myClass2]
// "myClass myClass2"
Outro aviso importante é que tanto os métodos quanto o método jQuery
$('div').prop('class');
retorne apenas a lista de classes do primeiro elemento capturado pelo objeto jQuery se usarmos um seletor mais comum que aponte muitos outros elementos. Nesse caso, temos que marcar o elemento, queremos obter as classes dele, usando algum índice, por exemplo
$('div:eq(2)').prop('class');
Depende também do que você precisa fazer com essas classes. Se você quiser apenas verificar uma classe na lista de classes do elemento com esse ID, use o método "hasClass":
if($('#myDiv').hasClass('myClass')){
// do something
}
como mencionado nos comentários acima. Mas se você precisar ter todas as classes como seletor, use este código:
$.fn.classes = function(){
var o = $(this);
return o.prop('class')? [''].concat( o.prop('class').split(' ') ).join('.') : '';
}
var mySelector = $('#myDiv').classes();
O resultado será:
// .myClass.myClass2
e você pode criar dinamicamente uma regra específica de reescrita css, por exemplo.
Saudações
Isso também funciona.
const $el = $(".myclass");
const className = $el[0].className;
Melhor maneira de obter o nome da classe em javascript ou jquery
attr()
A função attribute é usada para obter e definir o atributo.
Obter classe
jQuery('your selector').attr('class'); // Return class
Verifique se a classe existe ou não
The hasClass() method checks if any of the selected elements have a specified class name.
if(jQuery('selector').hasClass('abc-class')){
// Yes Exist
}else{
// NOt exists
}
Definir classe
jQuery('your selector').attr('class','myclass'); // It will add class to your selector
Obter turma ao clicar no botão usando jQuery
jQuery(document).on('click','button',function(){
var myclass = jQuery('#selector').attr('class');
});
Adicione classe se o seletor não tiver nenhuma classe usando jQuery
if ( $('#div-id' ).hasClass( 'classname' ) ) {
// Add your code
}
Obter a segunda classe em várias classes usando em um elemento
Change array position in place of [1] to get particular class.
var mysecondclass = $('#mydiv').attr('class').split(' ')[1];
use assim: -
$(".myclass").css("color","red");
se você usou essa classe mais de uma vez, use cada operador
$(".myclass").each(function (index, value) {
//do you code
}
parents()
.