現在
$(コンテナ).find( 探したい要素 ).length
という方法を使っていますが、このやり方で合っているでしょうか?
動くことは動くものの若干腑に落ちなさもあり、このやり方しかないのかな?と疑問に思っています。
[0]や.size()など、いくつかやり方はあるようですが…
あるいは逆に
$( 探したい要素 ).closest().length
のように、探したい要素から見て親があるかどうかを調べたほうがいいとかあったりするのでしょうか?
jQuery
1const $main = $('#main'); //documentとかbodyとかでもいいかもしれないけど、IDで絞っておいたほうが高速らしいので 2 3const $header = $('<header><h1>ハロー、ハッピーワールド!</h1></header>'); 4 5if( $main.find( $header ).length ) { 6 console.log("そんなわけない"); 7} 8else { 9 console.log("そうだよね") 10} 11 12$header.appendTo( $main ); 13 14if( $main.find( $header ).length ) { 15 console.log("そうだよね"); 16} 17else { 18 console.log("そんなわけない"); 19} 20 21$header.remove(); 22 23if( $main.find( $header ).length ) { 24 console.log("そんなわけない"); 25} 26else { 27 console.log("そうだよね"); 28}
追記
関数の引数として、すでに消えたはずの子要素(上記の場合は h1 )を渡し、その関数の中で親要素を削除しようとするとエラーになるようです
これがどうも回避できずにいます…
jQuery
1const $main = $('#main'); 2const $header = $('<header><h2>追記</h2></header>'); 3 4const func = ( $node ) => { 5 //中略 6 const $closest = $node.closest(); 7 8 if( $main.find( $node ).length && $main.find( $closest ).length ) { 9 $closest.remove(); //エラー 10 } 11}; 12 13const $h2 = $header.children('h2'); 14 15//中略 16 17$h2.remove(); 18 19//中略 20 21func( $h2 );
回答3件
あなたの回答
tips
プレビュー