2017-06-12 2 views
0

私は最近JS/jQueryを学んでいますが、その中のボタンをクリックするとトップdivに特定のスタイル/クラスを適用するのに助けが必要ですが、問題はhtmlボタンと祖先の同じクラスの異なるセクションがあります。は、トリガーボタンを含む実際のdivにのみを適用します。クリックイベントにのみ適用先の上位祖先

HTML:

<div class="class"> 
    <div> 
     <div> 
      <button data-action="action"> 

<div class="class"> 
    <div> 
     <div> 
      <button data-action="action"> 

SCRIPT:明らかにnew-classがアクティブボタンに関係なく、すべての既存のclassクラスに適用され、このコードで

$('[data-action="action"]').click(function() { 
    $(".class").addclass("new-class") 
}) 

ありがとうございます! (この場合、との最初の祖先「クラス」クラス名に)渡されたセレクタを有する第一の祖先を選択

$('[data-action="action"]').click(function() { 
    $(this).closest('.class').addclass("new-class") 
}) 
+1

試し '$(この).closest( "クラス ")。addclass(" 新しいクラス")CarstenLøvboAndersenのおかげで@' –

+0

に動作します、これを試してみてください!感謝します! –

答えて

1

は、以下のコードを使用します。この場合、$(this)セレクタはクリックされた特定の要素に適用されます。

$('[data-action="action"]').click(function() { 
    $(this).closest(".class").addclass("new-class") 
}) 
+0

ありがとう!感謝します! –

0

利用「最も近い」:

0

あなたはこのようなクリックされた要素の親を見つけることができます。

$('[data-action="action"]').click(function() { 
    $this.parents(".class").addclass("new-class") 
}) 
0

あなたは

<div class="class" id = "my_id"> 
<div> 
    <div> 
     <button data-action="action"> 

<div class="class"> 
<div> 
    <div> 
     <button data-action="action"> 

SCRIPT ..としてクラスと一緒にdiv要素のIDを提供することができます。

$('[data-action="action"]').click(function() { 
$("#my_id .class").addclass("new-class") 

})

は、それが

+0

あなたのコードは動作しません '$("#my_id .class ")' 'my_id'はclassというクラスを持つ子を持っています。第二に、OPの質問を解決するdivを追加しないでください –

関連する問題