2012-04-13 19 views
11

Bunları bir sürü kullanıyorum:jquery sözdizimi if-else ifadesini nasıl kısaltılır?

$text = $menu.jqmData('menu-text') ? 
      $menu.jqmData('menu-text') : self.options.menuTxt; 

Zaten "stenografi" sözdizimi, ama daha da yukarıdaki çizgiyi azaltmak mümkün olup olmadığını ben merak ediyorum. $ menu.jqmData ('menu-text')'u kontrol etmenin ve ardından her şeyi tekrar yazmanın daha iyi bir yolu olmalı. Orada değil mi

Yardımlarınız için teşekkürler!

cevap

21

Daha kısa yol çift boruyu kullanmaktır. Temel olarak ilk değer falsy ise ikinci değeri kullanır.

$text = $menu.jqmData('menu-text') || self.options.menuTxt; 

Aynı anda birden çok kez de kullanabilirsiniz. Diğer ikisine göre öncelikli olan uberMenuTxt değişkenine sahip olduğunuzu varsayalım. Temelde Geçerli değer falsy olduğunu ve bu ilk duracaktır her zaman sürdürür

$text = uberMenuTxt || $menu.jqmData('menu-text') || self.options.menuTxt; 

değildir.

+0

GREAT! Ton ton kaydedildi :-) – frequent

+0

Soru: her ikisi de bir değer döndürdüğünde diğerinden önce gelir. İlk olarak, normal bir ifadede olduğu gibi, doğru mu? – frequent

+4

@frequent yes, || (OR) çalışır. İlk ifade doğruysa, aşağıdakiler değerlendirilmez. – GNi33

İlgili konular