jQuery每个循环在每个循环上触发if语句

时间:2016-02-26 01:47:10

标签: javascript jquery

我有一个jQuery每个循环,它在我的页面上查找类 Get-ChildItem $path | Remove-Item -Recurse -WhatIf 的所有内容,并为Google DFP添加了一些广告脚本。

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

.big-box-300x250

从feedData变量中提取的数据是唯一的,也用于ID。例如,div可能看起来像这样:

    $('.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();
            }
        }
    });

如何修复此脚本,以便在每个循环中单独查看每个广告div,确定它是否具有iFrame,然后相应地运行脚本,然后再转到下一个。

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

enter image description here

2 个答案:

答案 0 :(得分:1)

在这里,您应该检查.length is >0,因为.has()方法不会返回boolean

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

答案 1 :(得分:0)

试试这个:

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