2017-03-15 2 views
0

Wie Klick außerhalb zwei Blöcke erkennenWie zu erkennen, außerhalb zwei Blöcke klicken

Mein Jquery-Code ist:

$(document).ready(function() { 
    $('.js-bottom-navbar__consultant').click(function() { 
     $('.bottom-navbar__consultant-content').toggleClass('navbar__consultant-content--opened'); 
    }); 

dieser Teil erkennt klicken auch auf untergeordnete Elemente, wo es nicht

funktioniert
$(document).on('click', function(e) { 
     if ($(e.target).is('.js-bottom-navbar__consultant') === false) { 
      $('.bottom-navbar__consultant-content').removeClass('navbar__consultant-content--opened'); 
     } 
    }); 
}); 

html

<div class="js-bottom-navbar__consultant bottom-navbar__consultant"> 
    <p>Some text too</p> 
    <p class="js-consultant__button consultant__button consultant__button--online">    <span class="button__text--desktop">Some text</span> 
    </p> 
</div> 
<div class="bottom-navbar__consultant-content navbar__consultant-content "> 
    <div class="consultant__details consultant__status--online consultant__status"> 
    <img class="consultant__img" src=""> 
    <div class="consultant__text"> 
     <p class="consultant__name"> 
     Name 
     </p> 
     <p class="consultant__specification"> 
     Specification 
     </p> 
     <a href="#" class="consultant__question"> 
     Start 
     </a> 
    </div> 
    </div>  
</div> 

Jsfiddle

+0

Enthalten Sie bitte das entsprechende HTML. Ihre Frage/Ihr Snippet verweist auf Elemente und "Blöcke", von denen wir nichts wissen. – Santi

+0

Ich habe jsfiddle hinzugefügt, Stack erlaubt es nicht, eine Frage mit viel Code zu posten http://jsfiddle.net/g8f9Lzcw/1/ – Angelzzz

+0

Zunächst einmal ist Ihr HTML nicht so lang. Aber noch wichtiger ist, dass Stack die kürzeste Menge an Code benötigt - Wenn der kürzeste benötigte Betrag 100 Zeilen ist, dann sei es so. Es gibt nichts, was sagt "Stack erlaubt nicht viel Code". – Santi

Antwort

0

Ich habe eine good deal of work beim Erkunden des Klickens außerhalb von Elementen gemacht. Es gibt auch eine fairly lengthy answer-thread, die einige der Methoden durchläuft. Meine Lösung für Ihr Problem beider Elemente zu finden, wäre so etwas wie dieses:

document.body.addEventListener('click', function(e){ 
    if(!element1.contains(e.target) && !element2.contains(e.target)){ 
     //do the work here 
    } 
}); 

Wo element1 und element2 sind die Elemente, die Sie der Klick außerhalb war überprüfen möchten.

Verwandte Themen