Javascript jQuery每个循环都会触发每个循环上的if语句

Javascript jQuery每个循环都会触发每个循环上的if语句,javascript,jquery,Javascript,Jquery,我有一个jqueryeach循环,它在我的页面上用类.big-box-300x250查找所有内容,并为googledfp添加了一些广告脚本 我希望发生的是,如果包含div的函数有一个iFrame,它应该触发if语句并设置父函数的高度。我遇到的问题是,每次脚本循环都会触发if语句,并且似乎对隐藏和显示的内容没有选择性 $('.big-box-300x250').each(function(index) { var display = $(this).data("deskto

我有一个jqueryeach循环,它在我的页面上用类
.big-box-300x250
查找所有内容,并为googledfp添加了一些广告脚本

我希望发生的是,如果包含div的函数有一个iFrame,它应该触发if语句并设置父函数的高度。我遇到的问题是,每次脚本循环都会触发if语句,并且似乎对隐藏和显示的内容没有选择性

    $('.big-box-300x250').each(function(index) {
        var display = $(this).data("desktop-display");
        if (display == true){

          var feedData = $(this).data('ad-type');
          var ad_script = '<script type="text/javascript">googletag.cmd.push(function() { googletag.display("' + feedData + '"); });</script>';
          $(this).append(ad_script);

            if ($(this).has('iframe')) {
                console.log("Triggering");
                $(this).parent().height(250)
                $(this).parent().css("margin", "20px 0")
                $(this).show();
            }
        }
    });
$('.big-box-300x250')。每个(函数(索引){
var display=$(this).data(“桌面显示”);
如果(显示==真){
var feedData=$(this).data('ad-type');
var ad_script='googletag.cmd.push(function(){googletag.display(“+feedData+”);';
$(this).append(ad_脚本);
if($(this).has('iframe')){
控制台日志(“触发”);
$(this).parent()高度(250)
$(this.parent().css(“边距”,“20px 0”)
$(this.show();
}
}
});
从feedData变量中拉入的数据是唯一的,也用于ID。例如,div可能如下所示:

<div id="div-gpt-ad-1450382754763-1" class="pb-ad-container big-box-300x250 border-bottom-hairline" data-mobile-display="false" data-desktop-display="true" data-ad-type="div-gpt-ad-1450382754763-1" style="">

如何修复此脚本,使其在每个循环中分别查看每个ad div,确定其是否具有iFrame,然后在进入下一个循环之前相应地运行脚本

这就是生成的标记的外观。前两个是工作广告,第二个是没有内容的空广告。前两个是我想要触发if语句的,但是它会触发所有的if语句

试试这个:

if ($(this).has('iframe').length)

在这里,您应该检查
.length
是否大于0
,因为
.has()
方法不返回
布尔值

 if ($(this).has('iframe').length>0) {

是否有任何类为
big-box-300x250
的元素嵌套在类为
big-box-300x250
的其他元素中?@MattBrowne-Negative。页面上有多个带有big-box-300x250的项目,但它们之间没有嵌套。甚至不需要
>0
部分。。。长度可以用作布尔值是。只是为了进一步澄清一下(现在我已经理解了这个问题).
has()
的返回值将始终是一个jQuery对象(即使它是一个空对象),因此它将始终计算为true。@Matt Browne exactlyStrangely这似乎仍然不起作用。即使在超时时,它也不会触发if语句。尽管我注意到脚本似乎生成了两个iframe。(这个)中有一个空的,在包含div中有一个。选择它的最佳方法是什么$(this.find(“div”).has(“iframe”).length>0?我还附上了一个标记的屏幕截图,以防有所帮助。