Soru Çocuğun ebeveynin tıklama etkinliğini başlatmasını önleme


Aşağıdaki kod parçasını düşünün:

<div class="div-outer">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    <div class="div-inner" style="background:red">
        Curabitur hendrerit vehicula erat, ut gravida orci luctus vitae.
    </div>
</div>

Şimdi dış divun canlı olduğunu varsayalım click ile ilişkili. Canlı olduğundan nasıl emin olurum? click ben ne zaman tetiklenir click iç kısımda div?

Düzenle:

İstendiği gibi JS

$(".div-outer").live("click",function(){alert("hi")}); 

Bu ".inner-div" tıklandığında tetiklenmemelidir


18
2017-12-03 11:37


Menşei


js.jquery kodunuzu da gönderin. - ryadavilli


Cevaplar:


İç çocuğa bir olay dinleyicisi eklemeli ve olayın yayılmasını iptal etmelisin.

Sade JS gibi bir şey

document.getElementById('inner').addEventListener('click',function (event){
   event.stopPropagation();
});

yeterlidir. Bunu not et jQuery aynı tesisi sağlar:

$(".inner-div").click(function(event){
    event.stopPropagation();
});  

veya

$(".inner-inner").on('click',function(event){
    event.stopPropagation();
});  

23
2017-12-03 11:40





Yeni oluşturmak click iç div için dinleyici ve event.stopPropagation() Bu yeni olayda.

sevmek

$('div-outer').on('click','div-inner',function(e){
    e.stopPropagation();
});

1
2017-12-03 11:42



Bu çözüm hakkında özellikle sevdiğim şey, ters olayı yapılandırmamda yardımcı oldu: çocuğun olayının ne zaman ateşlenmesini istiyorum, ancak ebeveynlerin değil. - Mike Zavarello


Bunu iç div'a bir tıklama olayı ekleyerek yapabilir ve return false; veya event.stopPropagation();

$(".div-inner").click(function(){

  return false;
})

veya

$(".div-inner").click(function(event){

  event.stopPropagation();
})

jsFiddle


1
2017-12-03 11:41





js dosyasında stopPropagation kullanın

 $(".eventclick").click(function(e) {
    e.stopPropagation();
});

0
2018-03-21 11:29