javascript – jQuery检测不存在的元素

我有一个函数,检查img标签是否在一个带有“colorBox”类的figure元素内,如果是,则为某些元素添加一些额外的样式.但是,即使彩盒图中没有图像,该功能仍然会运行,我不知道为什么.

我的jQuery看起来像这样

jQuery(document).ready(function($){
  if ($(".colorBox").has("img")) {
     ~code here~
  }
}

这里是彩盒图,显然没有img元素……

<figure class="colorBox">
  <ficaption>
    <h2></h2>
    <p></p>
    <p></p>
  </figcaption>
</figure>

那么为什么jQuery会选择一个不存在的元素呢?

解决方法

我会这样做:
jQuery(document).ready(function($){
  $('.colorBox img').each(function(){
      var imageElement = $(this);
      // do whatever you want with this element !
  });
  // OR this way
  $('.colorBox').each(function(){
      var Box = $(this);
      if( Box.find('img').length ){
          // this means the parent colorBox has at least 1 img-Element 
      }

  });
}

现在你的问题:

$(".colorBox").has("images");

$(“.colorBox”)返回元素列表(如果有)

然后你问列表.has(“img”)?这意味着如果列表中的一个元素内部有一个img元素,那么由于该if语句而得到一个true,这就是为什么你的代码不能按预期工作的原因

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...