2017-02-16 5 views
1

hasClass()で見つかったクラスの親のクラスを取得するだけで済みますが、機能しません。どうすればhasClass()の親を取得できますか?

if ($('.test div').hasClass('has-error')) { 
 
    console.log($(this).parent().className) 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='test'> 
 
    <div class='test2'> 
 
    <div class='has-error'></div> 
 
    </div> 
 
</div>

+0

なぜ '$( 'テストdiv.has-エラー')'? – haim770

答えて

1

あなたのコードの問題は、あなたが要素のスコープ内じゃないとthiswindowを参照するということです。

hasClassもここで少し冗長ですが、指定されたクラスの要素を直接選択してロジックを実行するだけです。

最後に、classNameはjQueryオブジェクトの有効なプロパティではないことに注意してください。おそらくattr('class')が必要です。これを試してみてください:

var className = $('.test div.has-error').parent().attr('class'); 
 
console.log(className)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
    <div class="test2"> 
 
    <div class="has-error"></div> 
 
    </div> 
 
</div>

+0

答えと説明をありがとう、これはすべてを明確にします。 –

1

$(".test div").each(function() { 
 
    
 
    if ($(this).hasClass('has-error')) { 
 
    console.log($(this).hasClass('has-error')) 
 
    console.log($(this).parent().attr("class")) 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='test'> 
 
    <div class='test2'> 
 
    <div class='has-error'> 
 

 
    </div> 
 
    </div> 
 
</div>

あなたはhas-classを持つ要素を返すためにfilterを使用して、その親のクラスを取得することができ、このよう

+0

'$( '。test div.has-error')。それぞれ(... –

+0

)hasClassは、それらのdivのすべてがそのクラスを持っているために役に立たないでしょう。なぜ彼はhasClass – guradio

1

を使用してください。

var c = $('.test div').filter(function() { 
 
    return $(this).hasClass('has-error') 
 
}).parent().attr('class') 
 

 
console.log(c)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='test'> 
 
    <div class='test2'> 
 
    <div class='has-error'> 
 

 
    </div> 
 
    </div> 
 
</div>

+0

なぜ '$( '。test div.has-error')だけではないのですか?parent()' –

+0

何らかの理由でopが 'hasClass' –

関連する問題