0

不知道我应该给它什么标题,但我遇到了一个让我头疼的问题。

我正在做一个涉及在地图上绘图的项目,地图有不同的房间,每个房间都有不同的大小。在选择新房间时,地图应调整大小。我将所有大小存储在我在 jquery 顶部创建的数组中。它基本上在页面加载时也会进行重新缩放,因为你必须选择一个你想开始的房间,这个重新缩放可以正常工作,所以我将该代码复制到函数中,但它似乎不想在那里工作。

我用来建造房间的阵列:

var hal1 = { id: 1, x: '0', y: '0', width: '114', height: '81', hal: 'Brabanthal'};
var hal2 = { id: 2, x: '0', y: '0', width: '33', height: '60', hal: 'Kempenhal'};
var hal3 = { id: 3, x: '0', y: '0', width: '87', height: '66', hal: 'Langstraathal'};  
var hal4 = { id: 4, x: '0', y: '0', width: '42', height: '47', hal: 'Diezehal'};  
var hal5 = { id: 5, x: '0', y: '0', width: '72', height: '57', hal: 'Peelhal'};  

var hallen = [ hal1, hal2, hal3, hal4, hal5 ];  

这是我用来在页面加载时重新缩放的代码

var hal = getUrlVars()["hal"];
if(typeof(hal) === 'undefined') hal=1;

var items = $.grep(hallen, function(x) {
    return x.id == hal
})

$(document).ready( function() {
    $.map(items, function(itemhal) {
     halw = itemhal.width;
     halh = itemhal.height;
     $('#mapDrag').width((Math.round(gridStand)*halw)*2).height((Math.round(gridStand)*halh)*2);
    });
});

上面的所有代码都可以完美运行,它只是下一个无法使用的功能。人们可以在单击它时从下拉菜单中选择一个不同的房间,它会发送房间(项目)的 id 并使用它运行该功能。然后它将所有新数据加载到 div mapdrag 中,然后它应该重新调整为数组中给定的大小,其中它与初始页面加载时的 id 匹配。

它不起作用的功能:

function changeHal(item) {
    if (hal != $(item).attr('halNr')) {
        hal = $(item).attr('halNr');
        var halXhr = jQuery.ajax({
            type: "POST",
            url: "ajax/hal.php",
            data: 'hal=' + hal,
            cache: false,
            success: function (response) {
                var items = $.grep(hallen, function (x) {
                    return x.id == hal
                })
                $.map(items, function (itemhal) {
                    halw = itemhal.width;
                    halh = itemhal.height;
                    $('#mapDrag').width((Math.round(gridStand) * halw) * 2).height((Math.round(gridStand) * halh) * 2);
                });
            }
        });
    }
}

感觉让它工作起来非常简单,但我似乎无法让它工作。

这是一个 jsFiddle,其中包含它的基本功能。正如您在加载时看到的那样,它会将 div 缩放到正确的大小,但是在下拉菜单中选择不同的房间时,它不会调整它的大小。jsFiddle:http: //jsfiddle.net/gujPK/

4

0 回答 0