javascript - 为什么写在闭包里面的函数无效?
黄舟
黄舟 2017-04-11 12:14:11
[JavaScript讨论组]

       function easytooltip(target,content) {
        target.mouseover(function(e){
            var html = "

"+content+"

"; $("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 = "

"+content+"

"; $("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);

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
伊谢尔伦

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

+function ($) {

        function easytooltip(target,content) {
        target.mouseover(function(e){
            var html = "<p class='card' style='display:block;'>"+content+"</p>";    
            $("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);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号