2017-09-12 2 views
0

私はdiv構造を持っています。親要素のクリックイベントのみをキャンセルします

<div id="parentDiv"> 
    Employee Data 
    <a>Click Here</a> 
</div> 

親のdivのクリックイベントは、サードパーティ製のプラグインによってすべての準備ができています。そのdivのクリックでいくつかの検証をしています。

「ここをクリック」というアンカータグのクリックに対して何らかのアクションを実行したいが、divのクリックのために登録されている検証を実行したくない。

ユーザーが[社員データ]をクリックすると、クリックイベントとして登録された検証が実行されます。

私は

<a onclick="(arguments[0]||window.event).stopPropagation();">Click Here</a> 
<a onclick="(arguments[0]||window.event).cancelBubble=true;"></a> 

を試してみましたが、イベントをクリックし、それはアンカータグすなわち彼自身のクリックイベントをキャンセルします。

+0

:また

$('#parentDiv').click(function() { console.log('parent clicked'); }) $('#parentDiv a').click(function(e) { e.stopPropagation(); console.log('child clicked'); })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="parentDiv"> Employee Data <a href="#">Click Here</a> </div>

、あなたがこのようなネイティブのJSを使用することができます:あなたはこのように、jQueryのを使用していることを行うことができますインラインリスナーを使用すると、これは簡単です... – Teemu

+0

試しましたか?Click Here '? –

+1

@AndreiCACIOなぜ彼らはそれを試みたでしょうか?それは全く機能しません。 – Teemu

答えて

1

stopPropagation()が必要ですが、発生したクリックイベントで直接呼び出す必要があります。 「あなただけのdidnの場合

document.querySelector('#parentDiv').addEventListener('click', function() { 
 
    console.log('parent clicked'); 
 
}) 
 

 
document.querySelector('#parentDiv a').addEventListener('click', function(e) { 
 
    e.stopPropagation(); 
 
    console.log('child clicked'); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parentDiv"> 
 
    Employee Data 
 
    <a href="#">Click Here</a> 
 
</div>

+0

私はdivとanchorのclickイベントを追加しようとしました。しかし、1つのメソッド 'validateData'がdivのclickイベントにバインドされています。そして、そのメソッドは、アンカータグのクリックイベントの前に呼び出されます。 –

+0

それが 'onclick'属性に追加されたということを仮定します。とにかくそれらを使用すべきではありません。例で掲示されたJS Iの関連するイベントハンドラからその関数を呼び出します。 –

+0

ページの他の領域に同じdiv構造体があります。私は彼らのためのデフォルトの動作を続けたい –

関連する問題