3 votes

Pourquoi ce jQuery ne fonctionne pas dans IE ?

Je travaille sur un site que quelqu'un d'autre a développé. Ils ont utilisé le code jQuery suivant pour produire le drop down dans le menu :

        <script type="text/javascript">

            var site_menu_categories_tID = null;
            $(document).ready(
                function(){
                    $("#site-menu-categories").click(
                        function(){
                            self = $(this);
                            $(".submenu-holder").show();
                        }
                    );
                    $("#site-menu-categories").mouseleave(
                        function(){
                            site_menu_categories_tID = setTimeout(function(){
                                $(".submenu-holder").trigger('mouseleave');
                                clearTimeout(site_menu_categories_tID);
                                site_menu_categories_tID=null;
                            },500);
                        }
                    );
                    $(".submenu-holder").mouseenter(
                        function(){
                            if(site_menu_categories_tID!=null){
                                clearTimeout(site_menu_categories_tID);
                                site_menu_categories_tID=null;
                            }
                        }
                    );
                    $(".submenu-holder").mouseleave(
                        function(){
                            self = $(this);
                            self.hide();
                        }
                    );
                }
            );
        </script>

Il fonctionne bien dans firefox mais pas dans les IE (8 et moins, je n'ai pas testé dans 9). Y a-t-il des erreurs apparentes que vous pouvez voir ?

4voto

ThiefMaster Points 135805

Pour éviter d'encombrer le champ d'application global, il faut se débarrasser de la première balise self = $(this); et ajouter var à la seconde ou simplement remplacer ces deux lignes par $(this).hide();

Apparemment, IE n'aime pas que l'on nomme une variable globale. self .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X