2016-11-09 3 views
0

Ich habe viel über mein Problem gesucht, aber keine Lösung gefunden. Ich weiß, ich bin neu in JavaScript/JQuery, aber vielleicht kann mir jemand helfen :) Ich habe dieses nette Dropdown gemacht, was gerade funktioniert, wie ich es brauche, aber da ist der letzte Bug. Wenn ich irgendwo auf die Seite klicke, wird es nicht versteckt. Es gibt meine JSFiddleWenn Sie auf eine beliebige Stelle auf der Seite klicken, Dropdown-Menü ausblenden

Irgendwelche Lösungen dort?

Es ist mein JavaScript/JQuery

var $dropdown = $('.dropdown-content'); 

$(".dropdown-label").click(function(e){ 
    var $drop = $(this).toggleClass('dropdown--active').find(".dropdown-content").stop(true).toggle(100); 
    $dropdown.not($drop).stop(true).hide(100); 
    return false; 
}); 

Antwort

6

Im folgenden Code ich nur das Dokument klicken Bindung hinzugefügt.

var $dropdown = $('.dropdown-content'); 

$(".dropdown-label").click(function(e){ 
    var $drop = $(this).toggleClass('dropdown--active').find(".dropdown-content").stop(true).toggle(100); 
    $dropdown.not($drop).stop(true).hide(100); 
    return false; 
}); 

$(document).on("click", function() { 
    $(".dropdown-content").hide() 
}) 
+0

Nice one Kumpel !!! –

+0

@ Prasad hat eine gründlichere Antwort, weil er das Stoppen des Klicks vom Blubbern einschließt. Ich habe versucht, die Frage des OP spezifisch zu beantworten. –

+0

Danke, das war für mich sehr gut gearbeitet! :) –

3

updated fiddle klicken Sie Dokument .Es wird die .dropdown-content verstecken .Und e.preventDefault() sie von anderen verhindern anwenden klicken

$(document).click(function(e){ 
$(".dropdown-content").hide(); 
e.preventDefault(); 
}) 
1

Hier ist die html ist

<div class="dropdown-content" style="width: 200px;height: 200px;border:1px solid #ccc;"></div> 

In Skriptdatei

$(document).on("click","body",function(e) { 
     if(!$(e.target).hasClass("dropdown-content")) { 
      $(".dropdown-content").hide(); 
     } 
    }); 
Hier 210

ist die Geige https://jsfiddle.net/ej4t2c5u/

1

.dropdown-Inhalt ändern es id und ich, was es ist schön und einfache Lösung

window.addEventListener('mouseup',function(){ 
 

 

 
var popup =document.getElementById('dropdown-content'); 
 

 

 

 
if (event.target != popup && event.target.parentNode != popup) 
 

 
{ 
 

 
popup.style.display='none'; 
 

 

 
} 
 

 

 

 

 

 

 
});

+0

es gibt mehr als eine Instanz des Dropdown-Inhalts, in diesem Fall sollte eine Klasse verwendet werden (keine ID) –

Verwandte Themen