【发布时间】:2012-04-27 07:23:10
【问题描述】:
我正在努力创建一种更语义化的方式来使用 jQuery 检查元素。使用 $("#element").length > 0 对我来说真的感觉不太好,所以我正在添加自己的选择器以在 .is 中使用:
if($("#element").is(":present")) {
console.log("It's aliiiveeee!!");
}
这部分很简单,就像这样:
$.extend($.expr[':'],{
present: function(a) {
return $(a).length > 0;
}
});
我想更进一步,使用类似的语法让查看元素是否不存在变得容易:
$.extend($.expr[':'],{
present: function(a) {
return $(a).length > 0;
},
absent: function(a) {
return $(a).length === 0;
}
});
$(function() {
if($("#element").is(":absent")) {
console.log("He's dead, Jim.");
}
});
但这部分很难做到。我认为这是因为我正在缩减返回的元素以获得结果,并且将选择器缩减为 .length === 0 与要求没有 elelements 相同:无论如何它都会返回 false。
我尝试了很多不同的方法来反转事物,并在元素不存在时返回 true,如果存在则返回 false:
return $(a).length === 0;
return !($(a).length > 0);
if(!($(a).length > 0)) {
return true;
}
if($(a).length > 0) {
return false;
} else {
return true;
}
return !!($(a).length === 0);
// etc...
有没有一种简单的方法可以让它在元素不存在时返回 true,如果存在则返回 false?
【问题讨论】:
标签: javascript jquery jquery-selectors boolean