2017-06-02 9 views
0

子SPANをクリックしたときに親クリックを防止したい。 は、私は私のようなHTMLを持って 子をクリックしたときに親クリックを防止する

e.stopPropagation 

    and thi way 

    if (!e) e = window.event; 
    e.cancelBubble = true; 
    if (e.stopPropagation) e.stopPropagation(); 

を試してみました:親要素のための

<label for="parent_id"> Some text 
    <span id="child_id">Click child</span> 
</label> 
<input id="parent_id" /> 

機能

$( '#のPARENT_ID')機能(E(クリック){ SomeParentCode }

子要素の機能

$('#child_id').click(function (e) { 
     e.stopPropagation(); 
     But I what to prevent parent click 
     SomeChildCode 
} 
+0

あなたの質問をよりよくフォーマットしてください。コードにコメントを追加する場合は、コメントタグ、つまり '/ * * /'や '//'を使用して、構文ハイライトが適切に機能するようにします。 – nem035

+0

あなたの質問に[mcve]があります。 – j08691

+0

[親のイベント、子のクリック(イベントのバブリング)]の可能な複製(https://stackoverflow.com/questions/27275279/event-on-parent-click-子供イベントバブリング) – Michelangelo

答えて

3

あなたがev.preventDefault

$(function() { 
 
    $('#child').click(e => { 
 
    e.preventDefault() 
 
    
 
    console.log('click on child') 
 
    }) 
 
    
 
    $('#parent').click(() => { 
 
    console.log('click on parent') 
 
    }) 
 

 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for="parent"> 
 
    <span id="child">Click Me</span> 
 
</label> 
 
<input type="text" id="parent">

+0

ありがとう。もう1つの質問。どうすれば同じ例でモバイルデバイス上でCSSホバーを処理できますか?親のホバーにクリックして表示されます。 – Mag

+0

@Mag問題ありません。あなたの2番目の質問について。モバイルブラウザの場合、私はCSSの面でうまくいきません。対応するタグで別の質問をするのがよいでしょう。 –

1

利用のpreventDefaultとのstopPropagationを呼び出すことによって、(入力に注力して)デフォルトのアクションを阻止する必要があります。

$('#child_id').on('click', function (e) { 
      e.preventDefault(); 
      e.stopPropagation(); 
}); 
関連する問題