可能性のある複製:
jQueryを使用してhtml要素が空かどうかを確認する
私はこのような空のdivを持っています:
<div id="cartContent"></div>
空かどうかを確認する必要があります。空の場合はtrueを返してから、
要素が追加されます。そうでない場合はfalseを返し、他の関数が実行されます。存在するかどうかを確認する最良の方法は何ですか
div内の要素?
ありがとう
プレーンなJavaScriptを使用する
var isEmpty = document.getElementById('cartContent').innerHTML === "";
そして、jqueryを使用している場合は、次のようにすることができます
var isEmpty = $("#cartContent").html() === "";
他の人がすでに指摘したように、jQueryで:empty
を次のように使用できます。
$('#cartContent:empty').remove();
空の場合、#cartContent
divは削除されます。
しかし、ここで人々が提案しているこのテクニックや他のテクニックは、空白を含むテキストノードがある場合、空とはみなされないため、あなたが望むことをしないかもしれません。したがって、これは空ではありません。
<div> </div>
あなたはそれを空と考えたいかもしれません。
私はしばらく前にこの問題を抱えていたので、この小さなjQueryプラグインを作成しました。コードに追加するだけです。
jQuery.expr[':'].space = function(elem) {
var $elem = jQuery(elem);
return !$elem.children().length && !$elem.text().match(/\S/);
}
そして今、あなたは使用することができます
$('#cartContent:space').remove();
divが空であるか、空白のみを含む場合、divを削除します。もちろん、削除するだけでなく、好きなことをすることができます。
$('#cartContent:space').append('<p>It is empty</p>');
次のように:not
を使用できます。
$('#cartContent:not(:space)').append('<p>It is not empty</p>');
私が望んでいたことを確実に行ったこのテストで出てきたので、プラグインからそれを取り出してスタンドアロンテストとして使用できます:
これはjQueryオブジェクトに対して機能します。
function testEmpty($elem) {
return !$elem.children().length && !$elem.text().match(/\S/);
}
これはDOMノードで機能します:
function testEmpty(elem) {
var $elem = jQuery(elem);
return !$elem.children().length && !$elem.text().match(/\S/);
}
これは.trim
を使用するよりも優れています空白ではない文字が1文字でもある場合は文字列。
それが役に立てば幸い。
Is関数を使用できます
if( $('#cartContent').is(':empty') ) { }
または長さを使用します
if( $('#cartContent:empty').length ) { }
var empty = $("#cartContent").html().trim().length == 0;
if ($("#cartContent").children().length == 0)
{
// no child
}