Ответ 1
Может быть, он будет работать следующим образом
$('html').click(function(e) {
if(!$(e.target).hasClass('solid') )
{
$('.menu').remove();
}
});
У меня есть динамически добавленное меню, которое я удаляю, если вы нажимаете в любом месте страницы, включая сами ссылки меню. То, что я пытаюсь достичь, - это предотвратить удаление, если вы нажмете на определенную ссылку, и это просто не работает для меня. К сожалению, я не могу использовать метод делегирования, если это поможет, из-за старой версии jquery, используемой на стороне клиента, нет возможности ее обновить.
Так что, возможно, вы могли бы предположить, есть ли способ сделать это. Вот мой быстрый пример.
<script>
$(function() {
$('.menu').append('<a href="" class="solid">Option</a> <a href="">Option</a> <a href="">Option</a>');
$('.menu a').live('click',function(){
return false;
});
$('a.solid').live('click',function(){
return false;
});
$('html').click(function() {
$('.menu').remove();
});
});
</script>
и контейнер
<div class="menu"></div>
Может быть, он будет работать следующим образом
$('html').click(function(e) {
if(!$(e.target).hasClass('solid') )
{
$('.menu').remove();
}
});
Вы пробовали это:
$('.menu a').click(function(event){
event.stopPropagation();
});
Вы также можете обнаруживать клики по всему документу и проверять, был ли текущий элемент нажатым, - это элемент меню
$(document).click(function(event){
if(event.target !== $('.menu')[0]) {
// hide the menu...
}
});
$('html').click(function(e) {
/* exept elements with class someClass */
if($(e.target).hasClass('someClass')){
e.preventDefault();
return;
}
/* but be carefull the contained links! to be clickable */
if($(e.target).is('a')){
return;
}
/* here you can code what to do when click on html */
});