2013-03-21 57 views
-1

我試圖根據元素是否存在將兩個值中的一個賦值給變量。我認爲這樣的事情應該可以...如果元素存在,則指定不同的值

$optsH = function(){ 
    if (jQ('#options').length > 0) { 
     return jQ('#options').outerHeight(); 
    } else { 
     return 0; 
    } 
} 

...但沒有。

我知道這應該是簡單的,但它是一個漫長的一天。

+1

「不」是什麼?什麼是'.length()'? – zerkms 2013-03-21 00:42:06

+0

我沒有任何錯誤,但我也沒有得到分配的值。我的壞 - 它應該是'.length' – verism 2013-03-21 00:42:34

+1

你正在分配一個函數的變量 – zerkms 2013-03-21 00:42:54

回答

2

很確定你只是忘了打電話給你的功能;

$optsH = (function(){ 
    if (jQ('#options').length > 0) { 
     return jQ('#options').outerHeight(); 
    } else { 
     return 0; 
    } 
})() 

如果你想,雖然優化它,這是一個更好的方法:

$optsH = jQ('#options').outerHeight() || 0; 
+0

但是,你的問題是模糊的,而不是問題 – Dave 2013-03-21 00:43:05

+0

你已經釘了它 - 謝謝。對不起,我認爲我的意圖從我發佈的代碼中清楚。無論如何,你推斷了正確的意思。 – verism 2013-03-21 00:48:46

+1

@verism是的,我猜的是變量名。但是,將來你應該總是說出你期望的代碼做什麼,以及它正在做什麼,即使它對你來說很明顯。它可以節省很多時間來回答問題,所以你更有可能得到答覆。 – Dave 2013-03-21 00:52:14

1

你能做到這樣

$(document).ready(function(){ 
     $('#input_field').val($('#options').length > 0 ? $('#options').outerHeight() : 0); 
}); 
+2

它在哪裏返回結果? – zerkms 2013-03-21 00:45:19

+0

固定,:)對不起,我有點匆忙:) – 2013-03-21 14:53:34

0

如果元素不存在jQ('#options')將返回一個空集,爲什麼其他檢查?

+0

這應該是一個評論,而不是一個答案。 – Dave 2013-03-21 00:53:49

2

如果選擇沒有元素相匹配的outerHeight調用將返回null,而空是falsy,所以你應該能夠做到這樣的事情:

$optsH = jQ('#options').outerHeight() || 0; 

(我無法立即進行測試,但我敢肯定它應該工作)

+0

它完美地工作,但戴夫已經提供了相同的答案。 – verism 2013-03-21 00:50:56

相關問題