使用纯JavaScript我可以做这样的事情:
var ninjaTurtle = document.getElementById('raphael') ||
document.getElementById('leonardo');
如果第一个DOM查找返回null
,这是假的,则会评估第二个查找。
jQuery函数$()
总是返回类似jQuery数组的对象,即使没有匹配的元素也是如此。即使是空的,这个对象也不是假的,因此下面的表达式永远不会评估右侧:
var ninjaTurtle = $('#raphael') || $('#leonardo');
那么,使用jQuery时这种回退的惯用方法是什么?
答案 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');