2012-05-30 43 views
0

我需要排除的功能元素和我用if子句挣扎......如何解决在JavaScript/JQuery中这个复杂的if语句?

我可以有四种类型的元素有三个属性

   A     B    C   D 
----------------------------------------------------------------- 
"external" undefined  boolean/undefined boolean  boolean 
"wrapper" boolean  undefined   boolean  undefined 
"parent"  1    0     1   1 

我需要构建一个if从句只允许一个传递,我要疯了......

以下是我有:

// "from" is my element to check 
if ( 
    (typeof from.jqmData("external-page") == "undefined" 
      && from.parents('body').length == 1) 
    || 
    (typeof from.jqmData("external-page") == "boolean" 
      && from.parents('body').length == 0) 
    ) { 
    // do something  
    } 

有人能帮助我,让我走上正轨吗?

谢谢!

+1

你就不能这样做'如果(...}这种一|| ...}这种B){...}'? [instanceOf](https://developer.mozilla.org/en/JavaScript/Reference/Operators/instanceof) – Andreas

+1

不完全确定问题是什么;你可以使用'==='显式地检查'undefined'和'false',除此之外它只是组合逻辑。 –

+0

@Andreas:谢谢instnaceOf。以前从未听说过。 – frequent

回答

1

将这项工作:

if (from.parents('body').length === 0 || typeof from.jqmData('external-page') === 'undefined') { 
    // do something 
} 
+0

好的。我知道了!我需要用父母替换父母,以使其工作,但你让我走上正轨! – frequent