0

我目前正在开发一个应用程序,该应用程序已经具有加载信息的现有功能,我需要将这些信息与加载此信息的 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");
});

这是我当前的脚本,在做了很多测试之后,由于某种原因断点暂停并导致问题,但是它确实将数据填充到我现在正确创建的弹出窗口中!正如你所看到的,我正在运行一个日志,并且它总是首先在我的日志中“加载营养素”的触发线它为什么要这样做?

4

0 回答 0