Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取jQuery中所有子元素的所有(不同的)类名?_Javascript_Jquery - Fatal编程技术网

Javascript 如何获取jQuery中所有子元素的所有(不同的)类名?

Javascript 如何获取jQuery中所有子元素的所有(不同的)类名?,javascript,jquery,Javascript,Jquery,我有一个这样的列表框 <div class="selectdiv"> <select class="mainclass" id="subcat"> <option>Select Category</option> <option class="class1" value="val1" >VAL1 </option> <option class

我有一个这样的列表框

 <div class="selectdiv">
    <select class="mainclass" id="subcat">
    <option>Select Category</option>
<option class="class1" value="val1" >VAL1 </option>                              
<option class="class1" value="val2" >VAL2</option>                              
<option class="class2" value="val3" >VAL3</option>                              
<option class="class2" value="val4" >VAL4</option>                              
<option class="class2" value="val5" >VAL5</option>                                                        
<option class="class3" value="val7" >VAL6</option>                              
<option class="class3" value="val8" >VAL7</option>
</select>                    
</div>

在第一个例子中,它给出了一个包含其他参数和类名的列表,但在第二个例子中它返回了未定义的

您可以遍历元素并将不同的类名放入某个数组中

var classList = [];
$('#subcat option').each(function () {
    if (this.className != "" && classList.indexOf(this.className) == -1) 
        classList.push(this.className);    
});

您可以遍历元素并将不同的类名放入某个数组中

var classList = [];
$('#subcat option').each(function () {
    if (this.className != "" && classList.indexOf(this.className) == -1) 
        classList.push(this.className);    
});

如果子元素可以有多个类

var obj = {};
$('#subcat').children().each(function () {
    $.each((this.className || '').split(/\s+/), function (i, v) {
        obj[v] = true;
    })
})
var classes = $.map(obj, function (val, key) {
    return key == '' ? undefined : key;
})
console.log(classes)

演示:

如果子元素可以有多个类

var obj = {};
$('#subcat').children().each(function () {
    $.each((this.className || '').split(/\s+/), function (i, v) {
        obj[v] = true;
    })
})
var classes = $.map(obj, function (val, key) {
    return key == '' ? undefined : key;
})
console.log(classes)

演示:

查看是否需要数组中的所有类,然后使用:

var cls = [];
$('#subcat').find('option').each(function(){
    cls.push(this.className);
});
这将输出所有类名

如果您想要不同的类名,如仅
class2
:则:

var cls = [];
$('#subcat').find('option[class$="2"]').each(function(){
    cls.push(this.className);
});
这将输出以
2
结尾的所有类名

或者,如果要获取除此
class2
之外的所有类名,则:

var cls = [];
$('#subcat').find('option:not([class$="2"])').each(function(){
    cls.push(this.className);
});

这将循环遍历每个元素(以
2
结尾的类名除外),并将所有类名推送到此处。

查看是否需要数组中的所有类,然后使用:

var cls = [];
$('#subcat').find('option').each(function(){
    cls.push(this.className);
});
这将输出所有类名

如果您想要不同的类名,如仅
class2
:则:

var cls = [];
$('#subcat').find('option[class$="2"]').each(function(){
    cls.push(this.className);
});
这将输出以
2
结尾的所有类名

或者,如果要获取除此
class2
之外的所有类名,则:

var cls = [];
$('#subcat').find('option:not([class$="2"])').each(function(){
    cls.push(this.className);
});
这将遍历每个元素,除了以
2
结尾的类名之外,并将所有类名推送到这里