我目前正在开发一个应用程序,该应用程序已经具有加载信息的现有功能,我需要将这些信息与加载此信息的 ajax 调用一起解析。我在加载的文档上选择元素值时遇到问题,因为它没有返回基于它正在选择的 dom 元素(通过突出显示测试)对我来说的价值,它是唯一被选择的元素。有问题的 jQuery 代码片段是:
$('.viewComponent').each(function(){
//run ajax call to get the components
var foodId = $(this).nextAll('input[name$=".code"]').val();
$('#createComponentDialog').load('getComoponent.do', "foodID=" + foodId);
calories = $('#createComponentDialog :input[name*="Calories"]').val();
});
因此,您可以看到,对于每个组件,我正在加载查询,然后尝试选择由查询填充的单个字段,以便稍后在进行一些数学运算后进入另一个区域,但是 val 返回为:“”它的 dom 元素在其中一个实例中选择是在 id 标记区域内,但已加载:
<li><label for="nutrients['Calories'].quantity">Calories</label><input id="nutrients'Calories'.quantity" name="nutrients['Calories'].quantity" class="text number" type="text" value="31.0" disabled="disabled"> kcal</li>
我包含了标签,所以如果这将是一个我不确定的问题,我也进行了运行长度调试,它仍然没有返回任何内容,但长度为 1,因此我可以在文档中找到这些已寻址输入中的一个使用 jquery 标签,所以我不是双重选择的东西。这完全在 spring mvc 堆栈上运行,所以这就是为什么会有一些时髦的名字。
编辑:我发现我的脚本的问题不只是现在我有一个新问题,而且这次有更多的片段,也许可以有一些意义:
$('input.nutritionFacts').live('click', function(e){
var servings = $('#servings').val();
var calories = 0;
var servSize = 0;
$('.weight').each(function(){
servSize += parseFloat($(this).val());
});
$('#servSize').html(servSize);
$('#servCont').html(servings);
//for each component
$('.viewComponent').each(function(){
//run ajax call to get the components
var foodId = $(this).nextAll('input[name$=".code"]').val();
var weight = $(this).nextAll('.weight').val();
$('#createComponentDialog').load('getComponent.do', "foodId=" + foodId, function(){
console.log("loaded" + foodId + "successfully");
});
calories += parseFloat($("input[name*='Calories']").val());
});
$('#calories').html(calories);
//run against weight from get components result
//sum into form frame for nutritionfacts
$('#nutritionFacts').dialog();
console.log("loaded nutrients");
});
这是我当前的脚本,在做了很多测试之后,由于某种原因断点暂停并导致问题,但是它确实将数据填充到我现在正确创建的弹出窗口中!正如你所看到的,我正在运行一个日志,并且它总是首先在我的日志中“加载营养素”的触发线它为什么要这样做?