我已尝试使用.closest,.parents和.eq在页面加载时选择此div,并且无法弄清楚它为什么不起作用。我的HTML是:
<div class="top">
<ul>
<li>
<div></div>
<ul class="first"></ul>
<div></div>
<ul class="first active">
<li><a class="current"></a></li>
</ul>
<ul class="first"></ul>
</li>
</ul>
所以在页面加载时我想要上面的div&#39; active&#39;改变颜色,但不能让它发挥作用。我试过了:
$(document).ready(function () {
if ($('.current').is(':visible')){
$('.current').closest('div').addClass('active');
});
答案 0 :(得分:1)
我认为你正试图选择上一个兄弟姐妹。
$('.current:visible').each(function(){
$(this).closest('ul').prev('div').addClass('active');
})
答案 1 :(得分:1)
你有不正确的选择器来定位所需的div。您需要首先遍历父级ul元素,然后遍历其先前的兄弟div。像这样:
$('.current:visible').closest('ul').prev().addClass('active');
答案 2 :(得分:1)
这应该有效:
$(document).ready(function () {
if ($('.current').is(':visible')){
$('.current').parents('.active').prev('div').addClass('active');
});
答案 3 :(得分:1)
源代码中div
以上.first.active
是兄弟,而不是父母,因此closest()
为什么在您使用的方法中不适合您
您可以使用closest()
获取父ul
,然后prev()
获取您需要的div
。试试这个:
if ($('.current').is(':visible')) {
$('.current').closest('ul').prev('div').addClass('active');
});
答案 4 :(得分:1)
.closest
将查找DOM树以找到最匹配的&#34; parental&#34;元件。你想要获得的div实际上是一个兄弟姐妹&#34; <ul>
所以.closest
无法找到它。
所以你需要前往<ul>
,然后获得元素&#34;之前&#34;那个。
$(document).ready(function () {
if ($('.current').is(':visible')){
$('.current').closest('ul').prev('div').addClass('active');
});