これにどのタイトルを付けるべきかわかりませんが、頭を悩ませている問題に直面しています.
マップ上に描画するプロジェクトに取り組んでいます。マップにはさまざまな部屋があり、各部屋のサイズは異なります。新しい部屋を選択すると、マップのサイズが変更されます。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/