0

目前我遇到了一点逻辑问题。假设我有一个对象,我在其中存储了我的 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 对象。有没有办法我可以做到这一点?否则,我需要将我的地图数据传递给我要制作的每个扩展。

先感谢您。真诚的,托马斯

4

2 回答 2

2

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

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

于 2012-10-05T14:13:15.883 回答
1

当设置一个全局变量时,它被分配给窗口对象。试试window.mapdata

于 2012-10-05T14:07:25.907 回答