/ / jQueryを使用して.has()でチェックする要素の使用方法-javascript、jquery、html

jQueryを使用して.has()でチェックする要素を使用する方法 - javascript、jquery、html

jQueryを使用して.has()でチェックする要素をどのように使用できるのか疑問に思いました。
これはこれまで私が持っていたものです

HTML

<div>
<!--Only this paragraph should have a red background -->
<p>This is a paragraph</p>
<h1>This is not a paragraph</h1>
</div>
<div>
<h1>This is not a paragraph</h1>
</div>

jQuery

$("div").has("p").addClass("para");

ご覧のとおり、divに <p> そうであれば、クラスを追加します。私の意図は、クラスを段落に追加することでしたが、クラスが私の部門に追加されるようです。クラスをどのように追加できますか <p> 使用後 $("div").has("p")

私はそれを入れるべきです if このような声明

if($("div").has("p")){
{...}.addClass("para");
}

しかし、どうすればクラスを自分に追加できますか <p>

私は フィドル 明確にするために

(この問題に.each()を使用できることは知っていますが、.has()でも可能かどうかを知りたいですか?)

回答:

回答№1の場合は3

単にあなたが使うことができます

$("div p").addClass("para");

回答№2の場合は1

エイリアン氏の提案に従うことをお勧めしますが、絶対に.has()を使用する必要がある場合は、最初に段落を選択する必要があります。このように書くと:

$("div").has("p").addClass("para");

選択した要素はまだdivです。 Ifステートメントの記述を避けたい場合は、次のようにチェックを記述します。

$("div").has("p").find("p").addClass("para");

編集:これは、divに段落が含まれているかどうかを実際にチェックするのではなく、ある段落を選択します。結果は基本的に同じです。


回答№3の場合は0
if($("div").find("p").length != 0) {
// another way to check if there is a p element inside of a div
$("div").find("p").addClass("para");
}

またはそうでない場合 ハッピー これを使用すると、jQueryの機能を変更できます。

has: function( target ) {
var i,
targets = jQuery( target, this ),
len = targets.length,
has = false;

this.filter(function() {
for ( i = 0; i < len; i++ ) {
if ( jQuery.contains( this, targets[i] ) ) {
has = true;
}
}
});
return has;
},

回答№4の場合は0
$("div").has("p").find("p").addClass("class_name");
// It will add class on p if div has p element