2013-05-31 1 views
0

моего код выглядит следующим образом:предотвратить нажмите событие от элемента, но не от <a> детей

<div class="disabledClickevent"> 
    <ul> 
    <li><a>link1</a></li> 
    <li><a>link2</a></li> 
    </ul> 
</div> 

ДИВ имеет событие щелчка, который получает отключенное с return false; моей проблемы в том, что это также отключает <a> ссылки

+2

Где находится ваш jquery, который отключает события click. – crush

+0

что вы хотите сделать точно? – mlwacosmos

+1

Просто для ясности, когда эта ситуация полезна? похоже, вы пытаетесь отключить все, что не является ссылкой, но ее ссылки, которые необходимо отключить. Я запутался ... – blackhawk

ответ

2
$(document).on('click','.disabledClickevent' function(e) { 
    if(e.target !== this) 
    //clicked out side 
return;  
    //clicked inside 
}); 
+0

изменил это на принятый ответ, потому что он работает «лучше» для меня, и я предпочитаю синтаксис – user1952949

2

Я хотел бы сделать это:

$(".disabledClickevent").on("click", ":not(a)", function(e) { 
    //do stuff with your div 
}); 

Это исключает a от события щелчка.

+0

. Это трюк благодарит за быстрый ответ всем! – user1952949

2

Может быть решение:

$('.disabledClickevent').on('click',function(e){ 
    if($(e.target).is(':not(a)')) 
     return false; 
}); 

Или установить обработчик щелчка по ссылкам:

$('.disabledClickevent a').click(function(e){ 
    e.stopPropagation(); 
}); 
0

Если вы не планируете добавлять новые «disabledClickevent» дивы на страницу с помощью Javascript, вы могли бы просто сделать это:

$('.disabledClickevent').click(function() {...}); 

или

$('.disabledClickevent').bind('click', function() {...}); 

Это прикрепляет событие только к уже существующему div без каких-либо делегирования, поэтому ссылки будут работать нормально, как вы хотите.

Чтобы быть ясным, это только жизнеспособное решение, если все divs disabledClickevent, которые вы планируете уже иметь на странице, в момент привязки события.

Смежные вопросы