2013-11-25 46 views
0

我有一個可以應用到一個元素3種可能的職業組合,爲我們着想的類如果else語句層次JS

".a" and ".b" 

有時都.a,並且可以應用於.b或有時只是.a有時無班級。我想寫一個聲明,如果現在映入例如

if (node.hasClass("a")){ 
//do something 
}else if(node.hasClass("a") && node.hasClass("b")){ 
//do something different 
}else{ 
//some something else all together 
}; 

但是,所有3種可能的組合,如果這種說法是不工作的,有什麼建議?

謝謝!

** hasClass();是一個YUI3方法

+0

如果訂購,請切換您的其他產品。如果因爲第一個條件將始終滿足,你將永遠不會得到第二個其他人。切換條件的順序。 (node.hasClass(「a」)&& node.hasClass(「b」)){else} if(node.hasClass(「a」)){else { } else {} ' ' ' –

回答

0

你總是需要 「抓住」 最嚴格的情況下第一。因此,將您的邏輯改爲:

if (node.hasClass("a") && node.hasClass("b")){ 
//do something 
}else if(node.hasClass("a")){ 
//do something different 
}else{ 
//some something else all together 
}; 
0

您的原始代碼不起作用,因爲如果該節點具有類a(不管它是否也具有類b),它將進入第一個塊,並且從不檢查其他條件。

試試這個:

if (node.hasClass("a")) { 
    if(node.hasClass("b")) { 
     // has a and b 
    } else { 
     // has a only 
    } 
} else { 
    // does not have a 
}; 
0
if(node.hasClass("a") && node.hasClass("b")) 
{ 
    //both .a and .b 
} 
else if(node.hasClass("a")) 
{ 
    //only .a 
} 
else if(node.hasClass("b")) 
{ 
    //only .b 
} 
else 
{ 
    //neither 
}