jquery:如果第一个选择器返回空,有没有一种简洁的方法来有条件地使用第二个选择器?

时间:2012-03-30 20:28:54

标签: javascript jquery

在python中,我可以执行以下操作,如果第一个列表为空,则有条件地使用第二个列表:

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

然而,在javascript中,

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

所以,如果“或技巧”不在桌面上,我想知道最简洁的方法是做一些类似下面的if-javascript-were-python-this-would-work伪代码:

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

3 个答案:

答案 0 :(得分: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")

答案 1 :(得分:2)

您可以根据长度进行测试:

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

// Assign your results
$elems = !first.length ? second : first;

答案 2 :(得分: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'))