2014-04-13 46 views
0

我有一個jquery if else語句,但是我的if語句有效,但是我的else語句沒有。如果有div存在做這個else做jquery不工作

我轉換這個原代碼:

$('.pt-trigger').click(function() { 
     $pageTrigger = $(this); 
     Animate($pageTrigger); 
    }); 

進入這個(這是else語句不工作)

$('.pt-trigger').click(function() { 
      if ($(".pt-trigger").has(".tick")) { 
       $(this).find('.tick').fadeIn(500, function() { 
        setTimeout(function() { 
         $pageTrigger = $('.pt-trigger'); 
         Animate($pageTrigger); 
        },400); 
       }); 
      } 
      else { 
       $pageTrigger = $(this); 
       Animate($pageTrigger); 
      } 
    }); 

下面是我的一些HTML的,一個顯示了與蜱和一個沒有:

<div class="pt-trigger-container"> 
      <button class="pt-trigger" data-animation="1" data-goto="-1"> 
       Get started 
      </button> 
     </div> 

<div class="pt-trigger-container clearfix"> 
       <button class="pt-trigger push" data-animation="1" data-goto="-1"> 
        Constantly active 
        <div class="tick"> 
         <i class="icon-ok-circled2"></i> 
        </div> 
       </button> 
</div> 

回答

1

兩個按鈕有.pt-trigger類,所以$(".pt-trigger").has(".tick")總是返回一組元素。

使用$(this)只檢查點擊的按鈕,並檢查長度,看看這個集爲空:

if ($(this).has(".tick").length != 0) { 
0

$(".pt-trigger")返回列表每 DOM元素與class=pt_trigger。所以$(".pt-trigger").has(".tick")不是真/假功能,它是過濾器,它只返回裏面有class=tick元素的元素。

除非你將要改變哪些在飛行中有class=tick,jQuery的方式,而是要給予每種情況下其自己的回調:

var triggers = $('.pt-trigger'); 
triggers.has(".tick").click(function() { 
    $(this).find('.tick').fadeIn(500, function() { 
     setTimeout(function() { 
      $pageTrigger = $('.pt-trigger'); 
      Animate($pageTrigger); 
     },400); 
    }); 
}); 

triggers.not(triggers.has(".tick")).click(function() { 
    $pageTrigger = $(this); 
    Animate($pageTrigger); 
}); 
+0

好的謝謝你,所以如何將我編輯它變成一個真正的if else statment? – probablybest

相關問題