2017-12-07 4 views
0

Ich habe dieses seltsame Szenario, das ich nicht verstehen kann.jQuery: Element ausblenden, nachdem es angezeigt wurde?

Grundsätzlich zeige ich ein Element mit jquery show();, die gut funktioniert.

Aber ich muss hide() das gleiche Element mit der hide(); Funktion, aber das Element bleibt sichtbar und die Verbergen() funktioniert nicht.

Kann jemand bitte Beratung dazu?

Hier ist eine funktionierende FIDDLE.

Dies ist mein Code:

$(document).on('click','.buildExMain', function(e){ 
$(this).children('.buildExDrop').show(); 
}); 


$(document).on('click','.pSelection', function(e){ 

$('.buildExDrop').hide(); 
}); 
+3

es ist, weil das Ereignis ausbreitet und das Auslösen der Handler, die die Elemente zeigt, können Sie 'e.stopPropagation()' in Ihrem Handler verwenden, die die Elemente versteckt - https://jsfiddle.net/8phpro4L/1 / – billyonecan

Antwort

2

@billyonecan war genau richtig, das Hinzufügen e.stopPropagation(); nach dem $('.buildExDrop').hide(); behebt diese.

Dadurch kann das Click-Ereignis ausblenden für die Unterelemente .pSelection nicht bis zum Show-Click-Ereignis des Elements .buildExDrop eingeblendet werden.

1

Ihr Klick zum Ausblenden löst auch den anzuzeigenden Klick aus. dies funktioniert

$(function(){ 
$(document).on('click','.buildExMain span', function(e){ 
$('.buildExDrop').show(); 
}); 


$(".buildExMain").on('click','.pSelection', function(){ 
$('.buildExDrop').hide(); 
}); 
}); 
Verwandte Themen