2012-10-02 95 views
1

以下工作部分:jQuery的比較操作

($(".call_1") || $("#call_1")).click(function(evt) 
     { 
     evt.preventDefault(); 
     $("#championSlideshow, #pourSlideshow, #skimSlideshow").fadeOut(0,function() 
     { 
     $("#prepareSlideshow").fadeIn(); 
      console.log(prepare); 
     }); 
    }); 

它拿起#call_1但沒有當我點擊.call_1

是語法錯誤的可能?

回答

5

我想你打算使用「multiple selector」:

$("#call_1, .call_1").click(function(evt) { 

}); 

在當前的代碼中,($(".call_1") || $("#call_1"))評價只會返回$(".call_1"),因爲這兩個調用將返回一個jQuery對象,這將永遠是truthy 。

+0

+1工作,解釋爲什麼它不工作。也許應該加上爲什麼不評估第二個表達式(http://en.wikipedia.org/wiki/Short-circuit_evaluation)。 –

4

請看看這裏:http://api.jquery.com/multiple-selector/

$(".call_1") || $("#call_1")應該是$(".call_1, #call_1")

您可以指定任意數量的選擇器組合成單個 結果。這個多重表達組合子是一種有效的方式來選擇不同的元素。 返回的jQuery對象中的DOM元素的順序可能不完全相同,因爲它們將以 文檔順序排列。

這裏有一個簡單的jsFiddle example

2

嘗試,因爲

$('.call_1, #call_1') 

它能向兩家.call_1#call_1