在jQuery插件中共享Javascript对象

时间:2012-10-05 14:04:08

标签: javascript jquery jquery-plugins

目前我遇到了一些逻辑问题。 假设我有一个对象,我为我的tileengine存储了几个mapdata,以及一个jQuery扩展,用于计算所点击的tile的x和y位置。

    $(document).ready(function(){   

        var mapdata = {
            dimensions: {x: 10, y: 10},
            tileSize: 32
        };

        $.fn.getpos = function(type){
            var xpos = $(this)%mapdata.dimensions.y;
            var ypos = Math.floor($(this)/mapdata.dimensions.y);

            else if(type == 'x')
                return xpos;
            else if(type == 'y')
                return ypos;
            else
                return {x: xpos, y:ypos}
        }       

        $('.tile').click(function(){
            console.log($($(this).index('.tile')).getpos());
        });
    });

问题很清楚。我正在尝试访问在getpos()范围内不可用的mapdata对象。有没有办法可以实现这个目标?否则我需要将mapdata传递给我将要制作的每个扩展名。

提前谢谢你。 诚恳, 托马斯

2 个答案:

答案 0 :(得分:2)

当你定义getpos()函数时,它会在同一时刻继承范围,因此现在定义的mapdata应该是可见的。

在getpost()中尝试console.log($(this))。可能它具有您对数学运算不期望的价值。

答案 1 :(得分:1)

设置全局变量时,会将其分配给窗口对象。试试window.mapdata