jQuery相当于||要么 ??操作者

时间:2011-08-25 12:13:51

标签: jquery

使用纯JavaScript我可以做这样的事情:

var ninjaTurtle = document.getElementById('raphael') ||
                  document.getElementById('leonardo');

如果第一个DOM查找返回null,这是假的,则会评估第二个查找。

jQuery函数$()总是返回类似jQuery数组的对象,即使没有匹配的元素也是如此。即使是空的,这个对象也不是假的,因此下面的表达式永远不会评估右侧:

var ninjaTurtle = $('#raphael') || $('#leonardo');

那么,使用jQuery时这种回退的惯用方法是什么?

3 个答案:

答案 0 :(得分:7)

检查匹配/返回的元素数将告诉您选择器是否匹配... fallback是一个简单的实用程序插件,可让您优雅地执行此操作...

jQuery.fn.fallback = function(elem) {
    return 0 < this.length ? this : $(elem);
};

此功能的最佳部分是您可以根据需要进行链接,直到找到匹配的元素。

$('#raphael').fallback('#leonardo').fallback('#kilik').dosomething();

答案 1 :(得分:0)

var ninjaTurtle = $('#raphael').length ?  $('#raphael') : $('#leonardo');

答案 2 :(得分:0)

我没有看到这样做的方式。我想到的最短的事情是:

var ninjaTurtle = $('#raphael').length ? $('#raphael') : $('#leonardo');