2012-03-30 7 views
8

は、私が第一1が空の場合は条件付きで2番目のリストを使用するには、次の操作を行うことができますJavaScriptでjquery:第1のセレクタが空に戻った場合、第2のセレクタを条件付きで使用する簡潔な方法はありますか? Pythonで

>>> x = [ ] or [1, 2] 
>>> x 
[1, 2] 

、しかし、

>>> x = [ ] || [1, 2]; 
[ ] 

をので、「またはトリック場合「最も簡潔な方法のようなものをやっていただきました!私は思ったんだけど、テーブルから外れて次のif-のjavascript--のp​​ython-この-だろう - 作業した擬似コード:

$elems = $('first-selector') || $('second-selector') 
+0

を使用しています。両方とも0の結果が返ってくると、あなたの反応は何ですか? – Sampson

+0

hiya、三元演算子はトリックを行うかもしれません! var $ elem =(foo.length == 0)? []:[1,2]; ;もしあなたがもっと知りたいのであれば、三項関係の周りの他の記事を読んだり読んだりすることがあります。 http://stackoverflow.com/questions/3168136/ternary-operator-in-javascript-with-multiple-expressions助けてくれることを願っています! –

+3

3進演算子:1950年以降、不可解なコードを作成しながら数バイトの文字を保存します。 –

答えて

9
var elems = $("first-selector"); 
if(!elems.length) { 
    elems = $("second-selector"); 
} 

は十分に簡潔ではないでしょうか?

jqueryエクステンションを少し書くのはどうですか?

$.fn.or = function(selector) { 
    if (this.length) { 
     return this; 
    } 

    return $(selector); 
} 

var elems = $("first-selector").or("second-selector") 
+2

+1の '$ .fn.or' :-) –

+1

さらに短く' $ .fn.or = function(x){this.lengthを返しますか? this:$(x)} ':-P –

2

あなたがベースにすることができます長さのオフテスト:

// Cache your results 
var first = $(".first"); 
var second = $(".second"); 

// Assign your results 
$elems = !first.length ? second : first; 
1
function coalesceArray(){ 
    for (var i=0; i<arguments.length; i++) { 
    if (arguments[i] && arguments[i].length) return arguments[i]; 
    } 
    return []; 
}

その後、あなたは結果の長さを確認することができますcoalesceArray($('first-selector'), $('second-selector'))

関連する問題