我正在努力创建一种更语义化的方式来使用 jQuery 检查元素。使用$("#element").length > 0
just 对我来说真的感觉不太好,所以我正在制作自己的选择器添加用于.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?