/ / Ako používať prvok, ktorý kontrolujem s .has () pomocou jQuery - javascript, jquery, html

Ako používať element, ktorý kontrolujem pomocou .has () pomocou jQuery - javascript, jquery, html

Zaujímalo by ma, ako by som mohol použiť prvok, ktorý som skontroloval pomocou .has () pomocou jQuery.
Toto som dosiaľ

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");

Ako vidíte, pýtam sa, či má moja div <p> a ak áno, pridať triedu. Mojím zámerom bolo pridať triedu do odseku, ale zdá sa, že trieda je pridaná do môjho oddielu. Ako môžem pridať triedu do mojej <p> po použití $("div").has("p")?

Mal by som to dať do if takéto vyhlásenie

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

ale ako môžem pridať triedu do mojej <p>?

mám husle aby to bolo jasné

(Viem, že by som na tento problém mohol použiť .each (), ale chcem vedieť, či je to možné aj s .has ()?)

odpovede:

3 pre odpoveď č. 1

jednoducho môžete použiť

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

1 pre odpoveď č. 2

Aj keď vám odporúčam postupovať podľa návrhu pána Aliens, ak bezpodmienečne musíte použiť .has (), musíte najskôr zvoliť odsek. Keď to napíšeš takto:

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

Váš vybraný prvok je stále div (y). Ak sa chcete vyhnúť písaniu príkazu If, napíšte šek takto:

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

EDIT: Toto skutočne nekontroluje, či div obsahuje odsek, ale vyberie tie, ktoré majú. Výsledok je v podstate rovnaký.


0 pre odpoveď č. 3
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");
}

ALEBO ak nie ste šťasný pomocou toho môžete zmeniť funkciu jQuery na toto

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;
},

0 pre odpoveď č. 4
$("div").has("p").find("p").addClass("class_name");
// It will add class on p if div has p element