私はこの質問に対する答えを数日間ずっと探していました.私の問題に対する答えのほとんどを見つけましたが、AJAX呼び出しを追加する前と同じように機能していないコードの一部がまだあります. .
背景: RPG キャラクター ジェネレーターとして機能する Web アプリを作成しています。最初に行うことの 1 つは、統計スコアを調整するための jQuery UI スピナー ウィジェットを作成することです。停止イベントで、私のコードは、現在の数を switch ケースと照合してチェックし、初期プールに追加または減算するポイント数を値に設定する関数を実行します (これらのことを知っている人のためのポイント購入システム)。
function calcPtsLeft() {
var ptssum = new Number();
var ptsmax = new Number($("#maxpoints").val());
var pbstr = pointBuy($strsc.val());
var pbdex = pointBuy($dexsc.val());
var pbcon = pointBuy($consc.val());
var pbint = pointBuy($intsc.val());
var pbwis = pointBuy($wissc.val());
var pbcha = pointBuy($chasc.val());
var ptssum = pbstr + pbdex + pbcon + pbint + pbwis + pbcha;
ptsleft = ptsmax - ptssum;
$("#ptsleft").val(ptsleft);
};
calcPtsLeft();
このコードは、AJAX 呼び出しを使用してさまざまなページを #content div に動的にロードすることにするまでは、適切に機能していました。キャラクター ジェネレーターをロードするために AJAX 呼び出しを行った後、ウィジェットがまったく表示されませんでした。これは委任の問題によるものであることがわかったので、ウィジェットの初期化をすべて関数にまとめました。
function initGenWidgets() {
//sets CSS for input/label items from jQuery UI set
$("#slider input:text, #slider label, #remaining input:text, #remaining label, #charName, #charAge")
.addClass("ui-spinner ui-spinner-input");
//initialize jQuery UI button widget
$("button").button();
//initialize jQuery UI radio buttonset widget
$("#genderbuttons").buttonset();
//initialize jQuery UI menu widget
$("#raceradio").menu();
//initialize jQuery UI vertical tabs
$("#char-gen").tabs().addClass("ui-tabs-vertical ui-helper-clearfix");
$("#char-gen li").removeClass("ui-corner-top").addClass("ui-corner-left");
//initialize jQuery UI spinner widget for age
$("#charAge").spinner({
icons: {
down: "ui-icon-minus",
up: "ui-icon-plus"
}
});
//initialize jQuery UI spinner widget for stats
$(".statspinner").spinner({
min : 7,
max : 18,
icons : {
down : "ui-icon-minus",
up : "ui-icon-plus"
},
stop: function(event, ui) {
calcPtsLeft();
}
});
//initialize jQuery UI slider widget for point-buy allotment
$("#pointslider").slider({
value: 20,
min: 15,
max: 40,
step: 5,
slide: function(event, ui) {
$("#maxpoints").val(ui.value);
calcPtsLeft();
}
});
};
次のように AJAX 呼び出しを行います。
//function to load php files into content div
function loadContent($page){
$("#content").load($page+' > *', function(response, status){
success: initGenWidgets();
});
};
//nav links load files into content div
$(".menulink").on("click", function(e){
e.preventDefault();
loadContent($(this).attr("href"));
});
calcPtsLeft()
すべてが正常に読み込まれるように見えますが、ウィジェットをテストすると、停止時にスピナーが機能を実行しなくなったようです。スライダーは、スライド後に #ptsLeft 値を更新するように機能します (後で修正します) が、スピナーは値をまったく更新しません。
ここで間違っていること、またはここでまったくしていないことは何ですか? どんな助けでも大歓迎です。