几天来,我一直在寻找这个问题的答案,虽然我已经找到了我的问题的大部分答案,但我的代码仍然有一段无法像添加 AJAX 调用之前那样工作.
一些背景知识:我正在创建一个 Web 应用程序来充当 RPG 角色生成器。发生的第一件事是我创建 jQuery UI 微调器小部件来调整统计分数。在停止事件中,我的代码运行一个函数,该函数根据开关情况检查当前数字,以设置从初始池中添加或减去多少点的值(Point-Buy 系统,适用于了解这些事情的任何人):
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 值(稍后将修复),但微调器根本不更新该值。
我在这里做错了什么,或者根本不在这里做什么?任何帮助将不胜感激。