为什么这个jQuery不能在IE中运行?

时间:2011-05-19 18:48:41

标签: javascript jquery cross-browser

我正在开发其他人开发的网站。他们使用以下jQuery代码在菜单中生成下拉列表:

        <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>

它在firefox中工作正常,但在任何IE中都没有(8及以下未在9中测试过)。您可以看到任何明显的错误吗?

1 个答案:

答案 0 :(得分:4)

为了避免使全局范围混乱,请删除第一个self = $(this);并将var添加到第二个,或者只需用$(this).hide();替换这两行

显然IE不喜欢你命名全局变量self