私はjQueryで要素をチェックするより意味のある方法を作ることに取り組んでいます。 $("#element").length > 0
を使用して本当に非常によく私に言葉を選んだ感じがしないので、私は.is
で使用するために私自身のセレクター加算を作ってるんだ:空のjQueryセレクタ配列で "True"を返しますか?
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にパージすることは、要素を要求しないことと同じです。何があってもfalseを返します。
私はそれがない場合は、物事を逆転し、要素が存在しない場合、これはtrueを返すために取得するさまざまな方法の多くを試みたが、偽ました:
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を返します。
したがって、一致したセレクタセットに要素が存在しない場合、 '.is'は本当にtrueを返すように設計されていませんか? 私は使っていたと考えるのだ別のオプション: '場合(。$( "#要素")(ある ":ない(本)が")){ はconsole.logは( "彼は、ジム・死にました。" ); } ' しかし、奇妙なことに、それはどちらも動作していません。 –
@ Code Junkie:もう一度、 '.is()'を使用する要素がないので、関数は単に呼び出されません。あなたがそれに投げるセレクタに関係なく、何も起こりません! – BoltClock
空のセレクタ結果に対してtrueを返す方法がないかもしれませんか? –