[Jquery] 我如何检测选择器是否返回null?


Answers

if ( $("#anid").length ) {
  alert("element(s) found")
} 
else {
  alert("nothing found")
}
Question

检测jQuery选择器是否返回空对象的最佳方法是什么? 如果你这样做:

alert($('#notAnElement'));

你得到[对象对象],所以我现在这样做的方式是:

alert($('#notAnElement').get(0));

这将写入“未定义”,所以你可以做一个检查。 但它似乎非常糟糕。 还有什么其他的方式?




我的偏好,我不知道为什么这不是已经在jQuery中:

$.fn.orElse = function(elseFunction) {
  if (!this.length) {
    elseFunction();
  }
};

像这样使用:

$('#notAnElement').each(function () {
  alert("Wrong, it is an element")
}).orElse(function() {
  alert("Yup, it's not an element")
});

或者,正如它在CoffeeScript中看起来那样:

$('#notAnElement').each ->
  alert "Wrong, it is an element"; return
.orElse ->
  alert "Yup, it's not an element"



我喜欢做这样的事情:

$.fn.exists = function(){
    return this.length > 0 ? this : false;
}

那么你可以做这样的事情:

var firstExistingElement = 
    $('#iDontExist').exists() ||      //<-returns false;
    $('#iExist').exists() ||          //<-gets assigned to the variable 
    $('#iExistAsWell').exists();      //<-never runs

firstExistingElement.doSomething();   //<-executes on #iExist

http://jsfiddle.net/vhbSG/