选择子级的父级(如果有)

时间:2013-02-28 12:05:30

标签: javascript jquery html css flexslider

我一直在尝试使用Flexslider v2更改某些内容以满足我的需求。 我一直在尝试使用jQuery来定位li的父img class="active",因为我想给它一类selected,但我还不是很成功

<ol class="foo">
  <li>
    <img src="bar.png" class="active">  <-- This class changes img elements depending on the active slide
  </li>
  <li>
    <img src="bar.png">
  </li>
  <li>
    <img src="bar.png">
  </li>
</ol>

我想出了类似的东西:

$(document).ready(function() {
   $('.foo li').children().each(function(index, value) {
     if($(value).hasClass('active')) {
         $(this).parent('li').addClass('selected');
     } else {
         $(this).parent('li').removeClass('selected');
     }
  });
});

它可以在控制台中运行,但它在我的main.js文件中没有任何作用。

6 个答案:

答案 0 :(得分:1)

LIVE DEMO

简单就像一行:

$('.foo li').find('img.active').closest('li').addClass('selected');

或者如果你真的需要它:

LIVE DEMO

$('.foo li').find('img').each(function(index, el) {
    if($(el).hasClass('active')) {
        $(el).closest('li').addClass('selected');
    } else {
        $(el).closest('li').removeClass('selected');
    }
});

jQuery API Documentation - Closest

答案 1 :(得分:1)

在我的main.js中将它包装成document.ready然后它应该按预期工作。 你可以在控制台中使用它,因为在你编写脚本时会加载所有元素。

$(function(){
    $('.foo li').children().each(function(index, value) {
      if($(value).hasClass('active')) {
          $(this).parent('li').addClass('selected');
      } else {
         $(this).parent('li').removeClass('selected');
      }
  });
});

答案 2 :(得分:0)

使用nearest():

$(this).closest('li'),addClass('selected');

答案 3 :(得分:0)

添加$(document).ready(function(){

$(document).ready(function(){
$('.foo li').children().each(function(index, value) {
    if($(value).hasClass('active')) {
        $(this).parent('li').addClass('selected');
    } else {
        $(this).parent('li').removeClass('selected');
    }
});
    });

检查similar question HERE

答案 4 :(得分:0)

$('.foo > li').removeClass('selected').each(function() {
    if($(this).find('img').hasClass('active')) {
        $(this).addClass('selected');
    }
});

答案 5 :(得分:0)

为什么要使用.each()?当我们没有它就能实现我们的目标。

$(".foo li img.active").parent().addClass("selected");