2017-09-16 30 views
6

W moim HTML tutajOnclick na dokumencie, a nie określony element Alert

$(document).click(function(){ 
 
    alert('Document Clicked'); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body> 
 
    <button type='button'>CLICK [NO ALERT]</button> 
 
    <button type='button'>ME[NO ALERT]</button> 
 
</body>

W moim kod tutaj, Jak mogę zapobiec alert z pokazywaniem jeśli kliknięciu na przyciski, Ale cokolwiek oprócz przycisków można ostrzec.

Odpowiedz

6

Możesz dodać kolejną click słuchacza na tym konkretnym <button> i powstrzymać rozprzestrzenianie zdarzenia:

$(document).click(function(){ 
 
    alert('Document Clicked'); 
 
}) 
 
$('.not-clickable').click(function(e) { 
 
    e.stopPropagation(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body> 
 
    <button type='button'>CLICK [NO ALERT]</button> 
 
    <button type='button' class="not-clickable">ME[NO ALERT]</button> 
 
</body>

Inną opcją jest sprawdzenie, czy element, który został kliknięty jest to, że specjalny przycisk:

$(document).click(function(e){ 
 
    if (e.target.classList.contains('not-clickable')) { 
 
    return; 
 
    } 
 
    alert('Document Clicked'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body> 
 
    <button type='button'>CLICK [NO ALERT]</button> 
 
    <button type='button' class="not-clickable">ME[NO ALERT]</button> 
 
</body>

+0

Dodam kolejny przykład, mam nadzieję, że jeśli możesz to sprawdzić, ponieważ użyje on tylko drugiej opcji, której używałeś tylko po to, aby skorygować różnicę – AXAI

+0

Nie rozumiem twojej aktualizacji. Jeśli chcesz ostrzec tylko kliknięcie przycisku 'po prostu usuń pierwszy' $ (dokument) .klik ... ' – Dekel

+0

Nieważne na mnie, Masz rację, Właśnie zdałem sobie sprawę, że to po prostu kolejny powtarzany dodatek – AXAI

0

spróbować

$("#SomeElementId").click(function(e) { 
 
    //do something 
 
    e.stopPropagation(); 
 
})

0

Spróbuj <button type='button' onclick="event.stopPropagation()">CLICK [NO ALERT]</button>. Domyślnie zdarzenia kliknięcia są wywoływane w elemencie nadrzędnym, ale event.stopPropagation(), zachowuje ono tylko początek elementu zdarzenia.