2016-02-26 110 views
2

我有一個jQuery each循環,它在我的頁面上尋找類.big-box-300x250的所有內容,併爲Google DFP附加一些廣告腳本。jQuery每個循環都觸發if語句在每個循環中

我想要發生的是,如果包含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(); 
      } 
     } 
    }); 

從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=""> 

我怎樣才能解決這個腳本,以便在每個循環,它看起來在每個廣告格設置單獨,確定它是否有一個IFRAME,然後纔去相應地運行該腳本到下一個。

這就是生成的標記的樣子。前兩個是工作廣告,第二個是沒有內容的空廣告。前兩個是我想要觸發if語句的那個​​,但是它觸發了所有這些語句。

enter image description here

+0

你有任何類元素'big-box-300x250'嵌套在類別爲'big-box-300x250'的其他元素中? –

+0

@MattBrowne負。在頁面上有多個大盒子300x250的項目,但它們不是彼此嵌套的。 –

回答

0

試試這個:

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

在這裏,你應該檢查.lengthis >0,因爲.has()方法不返回boolean

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

甚至不需要'> 0'部分...長度可以用作布爾值 – charlietfl

+0

是的。只是爲了一些額外的澄清(現在我明白了這個問題)... has()的返回值將始終是一個jQuery對象(即使它是空的),所以它總是會計算爲true。 –

+0

@馬特布朗確切 –