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


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

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

阅读 2.7k
1 个回答

函数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);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题