使用jQuery获取类名

X10*_*0nD 578 javascript jquery

我想使用jQuery获取类名

如果它有id

<div class="myclass"></div>
Run Code Online (Sandbox Code Playgroud)

Bol*_*wyn 1033

通过其他方式获取元素作为jQuery对象,然后

var className = $('#sidebar div:eq(14)').attr('class');
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.用于ID使用.attr('id').

如果您在事件处理程序或其他jQuery方法中,其中元素是没有包装器的纯DOM节点,则可以使用:

this.className // for classes, and
this.id // for IDs
Run Code Online (Sandbox Code Playgroud)

两者都是标准的DOM方法,并且在所有浏

  • 正如桑蒂诺在他的回答中指出的那样,总有可能设置多个类名.(例如,JQuery-UI在整个地方添加了辅助类).您总是可以使用`if(className.indexOf('')!== -1){throw new Error('呃 - 哦!多个类名!')来检查这个;}` (18认同)
  • RonnBlack:`if(className.indexOf('Class_I_am_Looking_For')> = 0)`也匹配`"This_Is_Not_the_Class_I_am_Looking_For"` (18认同)
  • 如果你利用`.attr('class')`并将它与`if(className.indexOf('Class_I_am_Looking_For')> = 0)组合在一起`你可以很容易地检查特定类的存在并仍然处理多个类. (16认同)
  • 如果它是一个ID var IDName = $('#id').attr('id'); (7认同)

san*_*ino 224

.hasClass()当您想要检查元素是否具有特定元素时,最好使用它class.这是因为当一个元素有多个class时,检查它并不容易.

例:

<div id='test' class='main divhover'></div>
Run Code Online (Sandbox Code Playgroud)

哪里:

$('#test').attr('class');        // returns `main divhover`.
Run Code Online (Sandbox Code Playgroud)

随着.hasClass()我们可以测试是否div有类divhover.

$('#test').hasClass('divhover'); // returns true
$('#test').hasClass('main');     // returns true
Run Code Online (Sandbox Code Playgroud)

  • 但是如果你*不知道类名怎么办?;-) (12认同)
  • 这是正确的...这只有在您知道要检查的类名时才有用...但我的评论是提醒您不要使用.attr('class')=='CLASSNAME_YOU_ARE_SEARCHING'来检查dom元素是否有一些而不是使用.hasClass更好 (10认同)
  • 另一种方法是使用`.is('.divhover')` (4认同)
  • 是的,它只是做$(元素).attr("class").split(''); 然后你得到一个列表然后只使用for或foreach循环 (3认同)

Abd*_*UMI 39

小心,也许,你有一个类和一个子类.

  <div id='id' class='myclass mysubclass' >dfdfdfsdfds</div>
Run Code Online (Sandbox Code Playgroud)

如果您使用以前的解决方案,您将拥有:

myclass mysubclass
Run Code Online (Sandbox Code Playgroud)

因此,如果您想拥有类选择器,请执行以下操作:

var className = '.'+$('#id').attr('class').split(' ').join('.')
Run Code Online (Sandbox Code Playgroud)

你会的

.myclass.mysubclass
Run Code Online (Sandbox Code Playgroud)

现在,如果要选择具有相同类的所有元素,例如上面的div:

   var brothers=$('.'+$('#id').attr('class').split(' ').join('.'))
Run Code Online (Sandbox Code Playgroud)

这意味着

var brothers=$('.myclass.mysubclass')
Run Code Online (Sandbox Code Playgroud)

更新2018年

OR可以用2行中的vanilla javascript实现:

  const { classList } = document.querySelector('#id');
  document.querySelectorAll(`.${Array.from(classList).join('.')}`);
Run Code Online (Sandbox Code Playgroud)

  • 类之间可能有多个空格.更正确的变量var className ='.'+ $('#id').attr('class').replace(/ +(?=)/ g,'').split('').join('. ") (6认同)
  • 一个更正确的表达式是''.'+ $('#id').attr('class').split(/ [\n\r\t\t\f] + /).join('.')` ,因为[space,Tab,LF,CR和FF](http://www.w3.org/html/wg/drafts/html/CR/infrastructure.html#space-character)允许分开类.(`.split()`也接受RegExps.) (3认同)

小智 27

这是为了将第二个类用于元素中的多个类

var class_name = $('#videobuttonChange').attr('class').split(' ')[1];
Run Code Online (Sandbox Code Playgroud)


Mad*_*ana 16

你可以简单地使用,

var className = $('#id').attr('class');


mg1*_*075 10

如果您<div>id:

?<div id="test" class="my-custom-class"></div>????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

...你可以试试:

var yourClass = $("#test").prop("class");
Run Code Online (Sandbox Code Playgroud)

如果您<div>只有a class,您可以尝试:

var yourClass = $(".my-custom-class").prop("class");
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您要使用split函数来提取类名,那么您将不得不补偿可能产生意外结果的潜在格式变化.例如:

" myclass1  myclass2 ".split(' ').join(".")
Run Code Online (Sandbox Code Playgroud)

产生

".myclass1..myclass2."
Run Code Online (Sandbox Code Playgroud)

我认为你最好使用正则表达式来匹配类名允许的字符集.例如:

" myclass1  myclass2  ".match(/[\d\w-_]+/g);
Run Code Online (Sandbox Code Playgroud)

产生

["myclass1", "myclass2"]
Run Code Online (Sandbox Code Playgroud)

正则表达式可能不完整,但希望您理解我的观点.这种方法减少了格式不良的可能性.


Pau*_*rcq 6

为了完成Whitestock的答案(这是我发现的最好的答案)我做了:

className = $(this).attr('class').match(/[\d\w-_]+/g);
className = '.' + className.join(' .');
Run Code Online (Sandbox Code Playgroud)

所以对于"myclass1 myclass2",结果将是'.myclass1 .myclass2'


Sad*_*san 5

您可以通过两种方式获取类名:

var className = $('.myclass').attr('class');
Run Code Online (Sandbox Code Playgroud)

要么

var className = $('.myclass').prop('class');
Run Code Online (Sandbox Code Playgroud)


小智 5

<div id="elem" class="className"></div>
Run Code Online (Sandbox Code Playgroud)

用Javascript

document.getElementById('elem').className;
Run Code Online (Sandbox Code Playgroud)

用jQuery

$('#elem').attr('class');
Run Code Online (Sandbox Code Playgroud)

要么

$('#elem').get(0).className;
Run Code Online (Sandbox Code Playgroud)