Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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_Jquery Selectors - Fatal编程技术网

Javascript jquery无法获取元素的类名

Javascript jquery无法获取元素的类名,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我有下面的代码,但是由于某些原因jQuery没有选择元素的类名,我知道如果元素有多个类调用,attr('class')将不会返回它们,但是.hasClass('class-name')应该能够识别元素是否有类名。 我的问题是jquery返回未定义的类名(我是从注释行中得到的)。 如何使#parent中没有class的所有其他div子级具有黄色背景 $(文档).ready(函数() { var j=$('#parent>div').size(); 对于(var i=0;i,children()

我有下面的代码,但是由于某些原因jQuery没有选择元素的类名,我知道如果元素有多个类调用
,attr('class')
将不会返回它们,但是
.hasClass('class-name')
应该能够识别元素是否有类名。
我的问题是jquery返回未定义的类名(我是从注释行中得到的)。 如何使
#parent
中没有class
的所有其他div子级具有黄色背景

$(文档).ready(函数()
{
var j=$('#parent>div').size();
对于(var i=0;i,
children()
调用是多余的,因为
div
元素都没有任何子元素。删除该子元素,代码就会工作:

$(文档).ready(函数(){
var j=$('#parent>div').size();
对于(变量i=0;idiv').eq(i).attr('class'));
if(!$('#parent>div').eq(i).hasClass('the-one')){
$('#parent>div').eq(i).css('background','yellow'))
}
}
});

一
二
三
四
问题是
$(“#parent>div”)
返回
#parent
子级,因此再次调用
children()
不会返回任何元素

您可以使用简单的jQuery选择器,而不是像

$(文档).ready(函数(){
$(“#parent>div:not(.one)”.css('background','yellow'))
});

一
二
三
四

为什么不试试更简单的方法呢

$("#parent > div").not(".the-one").css("background", "yellow");

$(文档).ready(函数(){
$('#parent>div')。每个(函数(){
var classtheone=$(this.hasClass('the-one');
如果(!classtheone){
$(this.css('background-color','yellow'))
}
})
});

一
二
三
四
试试这个

$("#parent div").each(function(){ 
var me=$(this); 
if(me.hasClass("the-one")) { me.css({"background-color" : "yellow"}); } 
})

正如其他答案中所述,您的
children()
调用是问题所在,我建议对
each()
使用以下解决方案,因为它更简单

$(文档).ready(函数()
{
$('#父div')。每个(函数(i){
if(!$(this).hasClass('the-one')){
$(this.css('background','yellow');
}
});
});

一
二
三
四

“我知道如果元素有多个类调用,attr('class')将不会返回它们”-这是错误的。
attr('class')
将返回class属性,该属性包含一个包含所有类名的字符串,用空格分隔。您已经阅读了children选择器
不使用.children();将选择结果存储在
var$divs=$(“#parent>div”)中也是一个好主意
,然后重新使用它,而不是每次都查询。@YeldarKurmangaliyev谢谢,当时正在编写一个编辑,以便在单个选择器上使用
每个
,提供一个改进的版本。谢谢,特别是关于使用each()的建议。不使用css的原因:不,它与ie不兼容