我目前正在开发一个已经具有加载信息的现有功能的应用程序,我需要与加载此信息的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");
});
这是我当前的脚本,经过多次测试后,断点由于某种原因暂停并导致问题,但它确实将数据填充到弹出窗口,我现在正确创建! 我可以看到我正在运行一个日志,并且它在我的日志中始终为“装载的营养素”点火线为什么会这样做?