2013-03-21 70 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

相关问题