我希望能够从disabled-item
的第一个孩子中删除s-yes
- 但是它没有删除?
如果我console.log
show
的值,那么我会看到完全错误的项目:
[div#s-yes, prevObject: n.fn....
HTML:
<div id="s-yes" style="display: none;">
<div class="s-item s-question disabled-item">
<label>label name</label>
jQuery的:
show = $('#s-yes');
show.show('fast');
show.first().removeClass('disabled-item');
我做错了什么?
答案 0 :(得分:5)
尝试在父元素
上使用.children()
show = $('#s-yes');
show.show('fast');
show.children().first().removeClass('disabled-item');
您的代码无效,因为.first()
将获得元素集合中的第一个元素。但是在使用id选择器时,集合中总是包含0/1
元素。
因此在父元素上使用.children()
时。它将返回元素的集合,这些元素是其父元素的直接子元素。您可以使用.find()
代替.children()
,但它会返回所有后代。
答案 1 :(得分:1)
您有不正确的选择器来定位所需的元素。您的选择器正在选择对象$('#s-yes')
:
$('.disabled-item:first',show).removeClass('disabled-item');
答案 2 :(得分:0)
试试这个:
show = $('#s-yes');
show.show('fast');
show.find(".disabled-item:first").removeClass('disabled-item');
.first()
返回id为s-yes的第一个元素。
答案 3 :(得分:0)
在儿童身上使用:first
选择器,
show = $('#s-yes');
show.show('fast');
$(':first', show).removeClass('disabled-item');
//^-children,^-parent
您的代码在父级本身上运行first()
。
答案 4 :(得分:0)
$(“li”)。first()。css(“background-color”,“red”);
这里首先返回第一个列表项
而不是使用
Show.first()。removeClass( '禁用项')
它将返回相同的错误
所以
使用它 $('#s-yes')。children(“。disabled-item”)。removeClass('disabled-item');
。儿童根据您的要求只下降一级
如果disabled-item类也在其他子元素中,那么你 孩子可以使用第一个()
希望这会有所帮助
答案 5 :(得分:0)
This is also Work
$("#s-yes").show('fast').children().first().removeClass('disabled-item');
$("#s-yes").show('fast').children().eq(0).removeClass('disabled-item');
$("#s-yes").show('fast').find(":first").removeClass('disabled-item');
$("#s-yes").show('fast').find(":first-child").removeClass('disabled-item');
$("#s-yes").show('fast').find(":nth-child(1)").removeClass('disabled-item');
$("#s-yes").show('fast').children(":first").removeClass('disabled-item');
$("#s-yes").show('fast').children(":first-child").removeClass('disabled-item');
$("#s-yes").show('fast').children(":nth-child(1)").removeClass('disabled-item');