2

我不擅长jquery。我想获取不透明度1的 div 的子元素的类属性。示例代码如下

<div class='parent'>
   <img class='child1' style='opacity:0;' />
   <img class='child2' style='opacity:0;' />
   <img class='child3' style='opacity:1;' />
   <img class='child4' style='opacity:0;' />
   <img class='child5' style='opacity:0;' />
   <img class='child6' style='opacity:0;' />
   <img class='child7' style='opacity:0;' />
</div>

我尝试了什么:

1. $('.parent').find('img').css('opacity','1').attr('class');

但它没有奏效。

2. $('.parent>img{opacity:1}').attr('class');

这也没有奏效。

你能指导我如何完成它。

4

5 回答 5

4
$('.parent img').filter(function() {
    return $(this).css('opacity') == 1;
}).attr('class');

正如您所说,这假设只有一个不透明度为 1 的元素。如果有更多,这将只返回第一个匹配元素的类。

于 2012-08-06T10:05:12.133 回答
1

您可以执行以下操作:

var child = null;

$('.parent img').each(function() {
   if(parseInt($(this).css('opacity')) == 1) {
      child = $(this);
      return false;
   }
});
于 2012-08-06T10:03:15.973 回答
1

您应该使用以下语法:

$('.parent').find("img^[style='opacity:1;']").attr('class')

看演示

于 2012-08-06T10:08:48.080 回答
1

这是您正在寻找的小提琴.filter()...您需要在 jQuery中使用


编辑:

在我之前,乌特卡诺斯和我一样。

$('.parent img').filter(function() {
    return $(this).css('opacity') == 1;
}).attr('class');
于 2012-08-06T10:09:35.647 回答
0

代替将数据存储在类属性中并使用内联样式,使用类设置样式并将数据存储在自定义属性中:

CSS - 父级的子级通常是不可见的,但如果他们有visible类则变得不透明

div.parent > img {
    opacity:0;
}

div.parent > img.visible {
    opacity:1;
}

HTML

<div class='parent'>
    <img data-field='child1' />
    <img data-field='child2' />
    <img data-field='child3' class="visible" />
    <!-- and so on -->
</div>

JavaScript:

$('.parent > img.visible').attr('data-field');
//or
$('.parent > img.visible').data('field');
于 2012-08-06T11:31:52.467 回答