不知道我应该给它什么标题,但我遇到了一个让我头疼的问题。
我正在做一个涉及在地图上绘图的项目,地图有不同的房间,每个房间都有不同的大小。在选择新房间时,地图应调整大小。我将所有大小存储在我在 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/