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を返す簡単な方法はありますか?