Empêcher la fermeture du menu déroulant lors des clics internes
Pour empêcher les menus déroulants Twitter Bootstrap de se fermer lorsqu'un élément interne est cliqué, une solution qui contourne la gestion déléguée des événements de clic est requise. Voici une explication détaillée et une solution proposée :
Par défaut, les menus déroulants Twitter Bootstrap se ferment à chaque clic, même dans le menu lui-même. Pour surmonter ce problème, une approche courante consiste à attacher un gestionnaire d'événements de clic au menu déroulant et à appeler event.stopPropagation() pour empêcher la propagation des événements.
Cependant, pour les configurations qui utilisent des composants tels que les contrôles de carrousel, l'événement délégué Le mécanisme de gestion de Twitter Bootstrap peut interférer avec le comportement prévu. Dans de tels cas, cliquer sur ces contrôles peut ne pas déclencher l'action attendue car l'événement n'atteint pas les gestionnaires d'événements délégués.
Se fier aux événements masqués/masqués dans la liste déroulante n'est pas une alternative viable car ces événements manquent d'informations essentielles et contrôle sur le contenu de la liste déroulante.
Solution proposée
Une solution efficace consiste à utiliser la délégation d'événements sur un élément conteneur qui héberge le menu déroulant. Voici un exemple :
$(document).on('click', 'someyourContainer .dropdown-menu', function (e) {
e.stopPropagation();
});
Dans cet exemple, cliquer sur des éléments dans le conteneur spécifié propagera toujours l'événement à ses gestionnaires délégués respectifs. Cependant, les clics spécifiquement sur le menu déroulant seront interceptés et event.stopPropagation() empêchera le comportement de fermeture du menu déroulant.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3