web-dev-qa-db-de.com

$ ('html'). click () ... irgendwo außer einem Element

Ich habe ein dynamisch angefügtes Menü, das ich entferne, wenn Sie irgendwo auf die Seite klicken, einschließlich der Menü-Links. Was ich zu erreichen versuche, ist das Entfernen zu verhindern, wenn Sie auf einen bestimmten Link klicken und das funktioniert bei mir einfach nicht. Leider kann ich die Delegat-Methode nicht verwenden, wenn dies aufgrund der auf der Clientseite verwendeten alten Version von Jquery helfen würde, keine Option zum Aktualisieren.

Vielleicht könnten Sie also vorschlagen, ob es einen Weg gibt, dies zu tun. Hier ist ein kurzes Beispiel von mir.

<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>

und der Behälter

<div class="menu"></div>
17
devjs11

Vielleicht wird es so funktionieren

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

siehe: http://jsfiddle.net/fq86U/2/

40
sneeky

hast du das probiert:

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

Sie können auch Klicks auf das gesamte Dokument erkennen und prüfen, ob das aktuell angeklickte Element Ihr Menüelement ist

$(document).click(function(event){
    if(event.target !== $('.menu')[0]) {
        // hide the menu...
    }
});​
3
pplewa
$('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 */

    });
0
alex