2010-10-13 5 views
1

J'ai un div à montrer quand j'ai appuyé sur un bouton et cacher quand j'ai appuyé n'importe où.Jquery - Le clic sur le document désactive les publications?

jQuery(document).ready(function() { 
    $(document).click(function (e) { 
     if (e.button == 0) { 
      $('#DivToHide').hide(); 
     } 
    }); 

    //If its own, return 
    $('#DivToHide').click(function() { 
     return false; 
    }); 
    //If it is the button to triger Display, return 
    $('#DisplayDivButton').click(function() { 
     return false; 
    }); 
}); 

Cela fonctionne bien, sauf que: DivToHide contient un bouton de lien qui effectue un rappel. Mais quand j'active le code ci-dessus, il ne fait pas de rappel. Pas que tout soit dans updatepanel. Merci.

Répondre

0

Ne pas cibler le conteneur div #DivToHide ..

cible le lien réel à l'intérieur

//If its own, return 
//this will make all links inside DivToHide to cancel default action.. 
$('#DivToHide a').click(function() { 
    return false; 
}); 

bien que, dans le cas où vous avez plus de liens à l'intérieur, vous devriez mieux ajouter une classe ou id le lien et cibler directement ..

Mise à jouraprès le commentaire

Vous devez utiliser le event.stopPropagation(); sur le lien pour empêcher l'événement de bouillonner vers les autres éléments.

$('#DivToHide a').click(function (event) { 
     event.stopPropagation(); 
    }); 
+0

@Karalahana, mis à jour ma réponse .. –

+0

Oui, c'est complètement ce dont j'ai besoin. Merci beaucoup. –

0

Si vous renvoyez false, cela empêchera l'exécution de l'action par défaut sur un événement. Lorsque vous cliquez sur le lien à l'intérieur de la DIV, il enregistre d'abord le gestionnaire de clic sur DIV et renvoie false, ce qui empêche le lien sous-jacent lui-même de recevoir l'événement click.

Je pense que c'est la raison pour laquelle votre lien ne fonctionnera pas, mais je ne sais pas pourquoi vous avez un gestionnaire sur #DivToHide de toute façon, ne pourriez-vous pas supprimer cela et laisser le gestionnaire de clic sur le document le DIV, et le gestionnaire de clic sur le handle DisplayDivButton montrant le DIV?

+0

Merci, j'utilise DisplayDivButton pour ouvrir div. Mais à cause du clic de document, quand j'appuie n'importe où à l'intérieur de div, il se cache ce qui est un comportement inattendu. Pour gérer cela, j'utilise $ ('# DivToHide'). Click (function() {return false}) et cela empêche de se cacher. Mais comment puis-je libérer mon linkbutton à la fois DivToHideClick et doccumnet cliquez, je ne sais pas. –

+0

Assez juste. J'ai vu une solution postée maintenant alors devinez que c'est corrigé, je pense que je vous ai mal compris. – EMMERICH

Questions connexes