首页 > 为什么写在闭包里面的函数无效?

为什么写在闭包里面的函数无效?


       function easytooltip(target,content) {
        target.mouseover(function(e){
            var html = "<div class='card' style='display:block;'>"+content+"</div>";    
            $("body").append(html);
            $(".card").css("left",e.pageX+10);
            $(".card").css("top",e.pageY+10);
        })
        target.mousemove(function(e){
            $(".card").css("left",e.pageX+10);
            $(".card").css("top",e.pageY+10);
        })
        target.mouseout(function(e){
            $(".card").remove();
        })
        }

上面的函数直接写进去的时候就是对的
但是如果写在闭包里面

+function ($) {

        function easytooltip(target,content) {
        target.mouseover(function(e){
            var html = "<div class='card' style='display:block;'>"+content+"</div>";    
            $("body").append(html);
            $(".card").css("left",e.pageX+10);
            $(".card").css("top",e.pageY+10);
        })
        target.mousemove(function(e){
            $(".card").css("left",e.pageX+10);
            $(".card").css("top",e.pageY+10);
        })
        target.mouseout(function(e){
            $(".card").remove();
        })
        }

}(jQuery);

就会提示方法未定义,是为什么?


函数easytooltip是一个闭包,什么叫放在闭包里?闭包仅在你外层函数的作用域下可见,你在外面访问当然访问不到,你需要一个方法把闭包暴露出去。

+function ($) {

        function easytooltip(target,content) {
        target.mouseover(function(e){
            var html = "<div class='card' style='display:block;'>"+content+"</div>";    
            $("body").append(html);
            $(".card").css("left",e.pageX+10);
            $(".card").css("top",e.pageY+10);
        })
        target.mousemove(function(e){
            $(".card").css("left",e.pageX+10);
            $(".card").css("top",e.pageY+10);
        })
        target.mouseout(function(e){
            $(".card").remove();
        })
        }
        
        window.easytooltip = easytooltip;//只是个例子

}(jQuery);
【热门文章】
【热门文章】