Подтвердить что ты не робот

$ ('html'). click()... где угодно, кроме одного элемента

У меня есть динамически добавленное меню, которое я удаляю, если вы нажимаете в любом месте страницы, включая сами ссылки меню. То, что я пытаюсь достичь, - это предотвратить удаление, если вы нажмете на определенную ссылку, и это просто не работает для меня. К сожалению, я не могу использовать метод делегирования, если это поможет, из-за старой версии 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>
4b9b3361

Ответ 1

Может быть, он будет работать следующим образом

$('html').click(function(e) {                    
   if(!$(e.target).hasClass('solid') )
   {
       $('.menu').remove();                
   }
}); 

см. http://jsfiddle.net/fq86U/2/

Ответ 2

Вы пробовали это:

$('.menu a').click(function(event){
   event.stopPropagation();
});

Ответ 3

Вы также можете обнаруживать клики по всему документу и проверять, был ли текущий элемент нажатым, - это элемент меню

$(document).click(function(event){
    if(event.target !== $('.menu')[0]) {
        // hide the menu...
    }
});​

Ответ 4

$('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 */

    });