2012-03-30 2 views
8

In Python kann ich folgendes tun, bedingt eine zweite Liste zu verwenden, wenn eine erste ist leer:jQuery: Gibt es eine prägnante Möglichkeit, einen 2. Wahlschalter bedingt zu verwenden, wenn ein 1. Wahlschalter leer zurückkommt?

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

In Javascript jedoch

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

Also, wenn der „oder Trick "ist vom Tisch, ich frage mich, was ist die prägnanteste Weise so etwas wie das zu tun, wenn folgende JavaScript-waren-python-this-wäre-Arbeit Pseudo-Code:

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

Sie können die Länge der Ergebnisse überprüfen. Aber was ist deine Antwort, wenn beide mit 0 Ergebnissen zurückkommen? – Sampson

+0

hiya, ternärer Operator könnte den Trick machen! var $ elem = (foo.lenge == 0)? []: [1,2]; ; oder für mehr Lesen oder Kasse andere Artikel rund um Ternär, wenn Sie mehr wissen wollen. http://StackOverflow.com/Questions/3168136/Terminal-Operator-in-Javascript-mit-Multiple-Expressions hoffe, es hilft, Prost! –

+3

Ternäre Operatoren: Speichern Sie einige Bytes in Zeichen, während Sie seit 1950 geheimnisvollen Code erstellen. –

Antwort

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

reicht nicht präzise?

Wie wäre es mit einer kleinen jQuery-Erweiterung?

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

    return $(selector); 
} 

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

+1 für '$ .fn.or' :-) –

+1

Noch kürzer:' $ .fn.or = function (x) {return this.length? dies: $ (x)} ':-P –

2

Sie können Ihre Basis Test aus der Länge:

// 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 []; 
}

dann coalesceArray($('first-selector'), $('second-selector')) verwenden

Verwandte Themen