如果子图像源为空,则更改/添加父类

时间:2018-05-16 10:07:17

标签: jquery

如果父级包含具有特定类的图像并使用jQuery包含src值,我试图向父级添加一个类。

我首先删除所有不包含img值的src代码的html。然后我检查该类是否存在。我假设,因为我首先删除没有图像源的图像标签然后应该只留下包含类名的图像标签? (这只是我的尝试随时提供更好的解决方案)

我的第二个功能目前无法实现上述目标。

JQUERY



$('.disc-image[src=""]').remove();
if ($('.si-innerWrap').hasClass('disc-image')) {
  $('.si-innerWrap').addClass('has-img');
}

.si-innerWrap {
  border: 10px solid black;
  margin: 10px;
  text-align: center;
}

.has-img {
  border: 10px solid red;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="si-innerWrap">
  <img class="disc-image" src="https://www.w3schools.com/html/pulpitrock.jpg">
</div>

<div class="si-innerWrap">
  <img class="disc-image" src="">
</div>

<div class="si-innerWrap">
  <img class="disc-image" src="https://www.w3schools.com/html/pulpitrock.jpg">
</div>

<div class="si-innerWrap">
  <img class="disc-image" src="">
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

选择子元素,但将类添加到父元素中:

   $('.disc-image[src=""]').remove();
   $('.disc-image').parent().addClass("has-img");

请注意$('.si-innerWrap').addClass('has-img');将类添加到类的所有元素中,即使将其放在if-then块中也是如此。

答案 1 :(得分:0)

您对Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(Unknown Source) at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(Unknown Source) at MoinPrograms.MouseOverActions.main(MouseOverActions.java:24) 的使用不正确,因为您要查找的课程将在子hasClass()元素上,而不是img本身。

要解决此问题,您可以在删除未设置.si-innerWrap的{​​{1}}后,使用has()确定div容器中是否包含任何.disc-image个元素。他们,然后添加课程。试试这个:

&#13;
&#13;
img
&#13;
src
&#13;
$('.disc-image[src=""]').remove();
$('.si-innerWrap').has('.disc-image').addClass('has-img');
&#13;
&#13;
&#13;