2016-08-16 7 views
1

一部のDIVはoutageと呼ばれるアンカー名を持ち、outageを親クラス.modAcTitleに追加する必要があります。結果は<div class="modAcTitle outage">This is a title.</div>です。タイトル固有のものは追加できません私ができる唯一のコンセプト。それはその内容でoutageアンカーを含むタイトルのすべての.modAcTitle代わり.outageを追加しているためアンカーを見つけて最も近いクラスにクラスを追加

しかし、私のアプローチは、以下の、ひどいです。

私は間違っていますか?ここで

$('a[name=outage]').parent().parent().parent().find('.modAcTitle').addClass("outage") 

私のDIV構造とデモです:https://jsfiddle.net/61za2n72/7/

<div id="ac_expand_0" class="modAc"> 
<div class="modAcTitle">This is a title.</div> 
<div class="modAcContent" style="display: none;"><p><a name="outage"></a>This is Content and it has a unique name tag called outage</p> 
</div> 
<div class="modAcTitle">This is a title</div> 
<div class="modAcContent" style="display: none;"><p><a name="outage"></a>This is Content and it has a unique name tag called outage</p> 
</div> 
<div class="modAcTitle">This is a title</div> 
<div class="modAcContent" style="display: none;"><p>This is content, but it doesn't have a name tag.</p> 
</div> 
</div> 

答えて

1

あなたのDOMのトラバーサルがかなり正確ではありません。あなたはこのように、closest()prev()を使用して、それを修正し、簡素化することができます。

$('a[name=outage]').closest('.modAcContent').prev('.modAcTitle').addClass('outage'); 

Updated fiddle

+0

それを手に入れました。それはトリックを行うでしょう。 Ty – Evan

+0

追加の助けを得ることができますか?あなたが私に示した「停止」と、[name = outage]が存在しないときにaddClass "none"を残りのmodAcTitleに同時に加えることができます。ああ気にしません。その$( '。modAcTitle:not( "。outage")')。addClass( 'none'); – Evan

関連する問題