2017-08-22 5 views
-1

JS関数を操作する:親要素が存在するかどうか、またそれが「見つからない」場合はどうすれば確認できますか?また、特定のclassNameを持つ親要素を調べるにはどうすればよいですか?親が存在するかどうかを確認する方法

var findParentByClassName = function(element, targetClass) { if (element) { var currentParent = element.parentElement; while (currentParent.className !== targetClass && currentParent.className !== null) { currentParent = currentParent.parentElement; } // closes loop return currentParent; } // closes if statement };

私はこの書き込みに考えていた:これは(最も近いの一例であること)と()jQueryの機能を得ることができます

if(element.parentElement !== targetClass) { console.log('Parent not found'); }

+0

まだ試しましたか? –

+0

投稿コード、どういうことをしていますか? –

+1

ようこそスタックオーバーフロー!最初に[ツアー](https://stackoverflow.com/tour)を利用し、[質問する方法](https://stackoverflow.com/help/how-to-ask)を学んで[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve)私たちがあなたを助けてくれるのは簡単です。 – mscheker

答えて

0

を。もちろん、DOMのすべてが親を持っているので、私たちは、何か特別なもののためにクラス=「MyClassの」でフォームをチェックします:

var element = $(yourElement).closest('form.myclass'); 

if(element.get(0)){ 
//you got your element 
} 
else{ 
    console.log('not found'); 
} 

メソッドget([インデックス])が原因必要とされ、セレクタは」勝ちましたtは空に戻ります。

+0

jQuery関数を使用できない場合はどうすればいいですか? –

+0

次に、nearest()アルゴリズムをチェックしようとすると、あなたのコードはかなり近いように見えます。 –

0

あなたは直接の親が特定のクラスを持っているかどうかを確認したい場合は、あなたがそれを行うことができ、いくつかの方法:

ピュアJavaScriptの(最高のパフォーマンス):

if (element.parentElement.classList.contains('nameOfClass')) {} 

jQueryの(最高のjQueryのパフォーマンス):

if ($(element).parent().hasClass('nameOfClass')) {} 

(すべてのセレクタに使用可能なだけでなく、クラス、悪い性能)のjQuery:

if ($(element).parent('.nameOfClass').length) {} 
関連する問題