2012-07-10 214 views
0

我有一個過濾器,並使用這個腳本的過濾器。jQuery if if else else filter

filteredData = filteredData.filter(function() { 
    var elm = $(this), 
    price = parseInt('0' + elm.attr('data-price'), 10) || 0; 
    if ($(price < 15)) { 
    return !(250 <= price); 
    } else { 
    return !(sliderData <= price); 
    } 
}); 

但是有什麼不對。價格值是15或更多。但是代碼永遠不會進入else結構。

+1

你'if'實際上是評估一個jQuery對象( '$(...)') - if檢查中的任何非空/非falsey值將導致檢查通過,if中的代碼將被評估 – nbrooks 2012-07-10 05:56:35

回答

2

嘗試取出來自該行的$()函數調用:

if ($(price < 15)) { 

它應該是:

if (price < 15) { 

$()函數返回一個對象,所有的對象都是「truthy」因此,這段代碼會始終進入if塊,而不是else塊。

(順便說一下,假設你解決上述問題,if分支內要返回!(250 <= price)永遠是true因爲price< 15表達,所以你還不如干脆說return true;在這一點上。)

+0

謝謝,您能舉一個修復的例子上述問題。現在我把它設置爲if(價格<15){但是現在他激發了這兩個陳述。低於en的else語句。但價格價值是15. – 2012-07-10 06:05:17

+0

我不明白你在這個評論中問什麼。如果價格值恰好爲15,那麼將會轉到'else'分支,因爲15不小於15。 – nnnnnn 2012-07-10 06:14:53

0

我覺得你的if聲明有些不合適。

filteredData = filteredData.filter(function() { 
      var elm = $(this), 
      price = parseInt('0' + elm.attr('data-price'), 10) || 0; 
      if (price < 15) { 
       return !(250 <= price); 
      } else { 
       return !(sliderData <= price); 
      } 
     }); 

這會有所幫助。

1

看來你已經把 '$' 選擇意外:

儘量只: 如果(價格< 15){ (...)