2014-12-10 3 views
0

При настройке div с классом, присоединяющего событие click к этому классу с помощью jQuery, он предотвращает работу любого дочернего href. , например:jQuery parent element event «click» блокирует ссылки href

HTML

<div class="someClass"> 
    some text here 
    <a href="http://www.google.com">and a link</a> 
</div> 

JS

$('body').on('click', '.someClass', function(e) { 
    alert("clicked"); 
}); 

jsfiddle для этого: http://jsfiddle.net/w6ero5j5/2/

всегда предупредит сообщение, даже при нажатии на ссылку. Как я могу заставить ссылку работать?

+0

Hacky фикс: оберните предупреждение в: 'если (! E.target.nodeName = 'A') {Alert (...); } ' –

+0

Этот код работает нормально, проблема в том, что вы запускаете его в jsfiddle, и он не будет загружать ссылку внутри области jsfiffle (возьмите lok в инспекторе браузера, это вызовет ошибку). Добавьте target = "_ blank" в href, и он будет работать. –

+1

Проблема в том, что загрузка Google внутри jsfiddle запрещена с помощью X-Frame-Options, потому что Google не разрешает кадрирование с кросс-началом. – Oriol

ответ

0

Я не знаю, зачем вам это нужно. Но это происходит, когда вы устанавливаете функцию предупреждения. Тогда, если вы выполните это, проблем не будет. code here

$('.someClass').on('click', function(){ 
    var $this = $(this); 
    if ($this.hasClass("ok")) { 
     $this.removeClass("ok"); 
    } else { 
     $this.addClass("ok"); 
    } 
});