Je veux montrer un divisé sur un lien clic et masquer si cliquez sur le lien ou DIV.
$(document).ready(function() {
$("#login").click(function () {
$("div.login-panel").toggle();
});
$("body").click(function(e){
if(e.target.className == "login" || e.target.className == "login-panel") {
//alert("do't hide");
}
else {
$(".login-panel").hide();
}
});
});
8 Réponses :
Problème est lorsque je clique sur la zone de saisie pour entrer le nom d'utilisateur Login-Panel-Div Obtenez des peaux. Pourquoi div masquer? p> blockQuote>
Parce que, vous avez également cliqué sur le corps, en cliquant dans la DIV. Ensuite, les deux événements sont déclenchés. Découvrez événement.stoppropagation () que vous pouvez utiliser dans l'autre partie de corps.click. p>
Si les deux événements sont déclenchés, e.target.classname == "Panneau de connexion" doit être VRAI.CORRECT si je me trompe
Hm, oui. Cela semble raisonnable. Avez-vous essayé d'arrêter la propagation?
Vous allez ici:
$(document).ready(function () {
$("#login").click(function () {
$("div.login-panel").toggle();
});
$("body").click(function (e) {
if (e.target.nodeName != "INPUT" && e.target.className!= "login" && e.target.className!= "login-panel") {
$(".login-panel").hide();
}
});
});â
Lorsque vous cliquez sur un sous-élément, votre condition (e.target.classname) n'est pas appliquée à votre élément parent ( la plus proche code> de jQuery (voir ici ) dans l'ordre Pour tester si vous êtes dans votre élément parent: if(e.target.className == "login" || $(e.target).closest(".login-panel").length === 1) {
...
}
Comme l'autre dit en cliquant sur Entrée Cause événement déclenchant dans le corps, vous devez vérifier si l'expéditeur est enfant de la connexion, je pense que le code fait le tour; EDIT: Mettre à jour le Condition avec la fonction la plus proche car il est correct. p> commence par l'élément actuel, déplace l'arbre DOM jusqu'à ce qu'il trouve une correspondance pour le sélecteur fourni. L'objet JQuery retourné contient zéro ou un élément pour chaque élément de l'ensemble d'origine. P> p>
Il suffit de trouver la souris lorsque l'événement de clic se produit,
<script type="text/javascript">
find_mouse = false;
$(document).ready(function()
{
$('.login-panel').hover(function(){
find_mouse=true; // if mouse on login-panel
}, function(){
find_mouse=false; // not on login panel
});
$("body").click(function(){
if(! find_mouse) // if not on login panel
$('.login-panel').hide();
});
});
</script>
Voici la question non pour les appareils tactiles .!@jigneshkheni