我想使用jQuery获取类名。
如果它有一个id呢?
<div class="myclass"></div>
如果通过其他方式而不是其类名获取元素并将其作为jQuery对象获取后,那么
var className = $('#sidebar div:eq(14)').attr('class');
可以试试这个方法。对于ID使用.attr('id')
。
如果你在事件处理程序或其他jQuery方法内部,元素是纯DOM节点而没有包装器,你可以使用:
this.className // for classes, and
this.id // for IDs
两者都是标准的DOM方法,在所有浏览器中都得到了良好的支持。
if(className.indexOf(' ') !== -1){throw new Error('Uh-oh! More than one class name!');}
- Potherca.attr('class')
并结合 if(className.indexOf('Class_I_am_Looking_For') >= 0)
,就可以轻松检查特定类别是否存在,并且仍然能够处理多个类别。 - RonnBlack当您想要检查元素是否具有特定类时,最好使用.hasClass()
。这是因为当一个元素具有多个类时,检查不是微不足道的。
示例:
<div id='test' class='main divhover'></div>
何时使用:
$('#test').attr('class'); // returns `main divhover`.
使用 .hasClass()
我们可以测试 div
是否有类名为 divhover
的 class。
$('#test').hasClass('divhover'); // returns true
$('#test').hasClass('main'); // returns true
.is('.divhover')
。 - orad小心,也许你有一个类和一个子类。
<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')
使用纯JavaScript可以在两行内实现OR:
const { classList } = document.querySelector('#id');
document.querySelectorAll(`.${Array.from(classList).join('.')}`);
'.'+$('#id').attr('class').split(/[ \n\r\t\f]+/).join('.')
,因为空格、制表符、换行符、回车符和换页符可以用于分隔类名。(.split()
也接受正则表达式。) - Boldewyn.attr('class').trim().split(...)
。 - Christian Lavallee使用into元素将第二类元素加入多个类别中
var class_name = $('#videobuttonChange').attr('class').split(' ')[1];
你可以通过以下方式来获取:
var className = $('#id').attr('class');
<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"]
<div id="elem" class="className"></div>
使用Javascript
document.getElementById('elem').className;
使用jQuery
$('#elem').attr('class');
或者
$('#elem').get(0).className;
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');
parents()
,你实际上可能会遇到这种情况。 - Boldewyn