2017-01-20 15 views
1

でクリックした親から値を取得しますか?私はこのコードを持っているjQueryの

実は、私のコードは次のようになりますが、それは動作しません:

$('.container').on('click', '.switchStatus a', function() { 
    var module = $(this).data('module'); 
}); 

感謝。

+1

モジュール属性は親である.... 。アンカーではない – epascarello

答えて

2

は、あなたのクリックハンドラのコールバック関数内で

var module = $(this).parent().data('module');

+0

'.closest()'は特定の階層構造を必要としないため、ほとんどの場合 '.parent()'より優先されるので、後でDOMを変更することができます。 – mhodges

+0

@mhodges、私は同意します。しかしこの場合、親は2つのハイパーリンク 'a'タグを含むラッパーdivに過ぎません。 – VHS

+0

私はあなたに同意しますが、開発者は常に将来的に可能なコードとして書くことを目指すべきです。そうしないと良い理由はない(特にこの場合)。 – mhodges

1

this contextがクリックされた<a>要素にバインドされます試してみてください。親を取得するには、セレクタで.closest()メソッドを使用します。これは、次のようになります。

$(this).closest("[data-module]").attr("data-module");

0

をノード ''

$('.container').on('click', '.switchStatus', function() { 
    var module = $(this).data('module'); 
    alert(module); 
}); 
1

使用に最も近い(」。switchStatus')whitout、これを試してみてください。

jQueryのだから私はこの場合にセレクタパラメータ(.switchStatus aの要素を意味推測 コールバック

の対象となる要素にコールバック関数の範囲を設定します)

$('.container').on('click', '.switchStatus a', function(event) { 
 
    var module = $(this).closest('.switchStatus').data('module'); 
 
    console.log('My name is ' + module) 
 
    event.stopPropagation() // always good to stop event bubbles after you have used them. 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="switchStatus btn-group" data-module="Spartacus"> 
 
      <a class="btn btn-primary">Active</a> 
 
      <a class="btn btn-primary">Inactive</a> 
 
    </div> 
 
</div>

関連する問題