0

我一直使用 atempClass来遍历某些内容并选择第一个子文本输入。我现在对此有奇怪的问题。我一直在寻找并没有成功找到正确的方法来做到这一点。

代码片段

$( ".inputQuantityUpdate" ).each(function( index ) {
    $(this).addClass("tempPtr");
    completed   = $(".tempPtr :input[type='text']:first").val();
    nc          = $(".tempPtr :input[type='text']:first").next().val();
    if(nc == "NC")nc = 0;
    $(this).removeClass("tempPtr");
    $(this).parent().remove();
});

我的问题是 nc 并且完成对于第一次迭代是正确的,但不是在之后。由于某种原因,这不起作用。解决这个问题的最佳方法是什么?

更新:标记的解决方案有效。我应该发布我正在抓取的其他字段,因为它们不起作用。当迭代中只有一个元素“inputQuantityUpdate”时,这组例程有效。当有多个时它会爆炸。我有一种感觉,这是我的某种内存问题/语法滥用。如果元素中存储了以下数据,那么最好的方法是什么:

function updatesConfirmed(){
        $("#confirmInputValues").remove();
        $( ".inputQuantityUpdate" ).each(function( index ) {
            job         = $(this).data("job");
            suf         = $(this).data("suff");
            op          = $(this).data("op");
            completed   = $(":input[type='text']:first", this).val();
            nc          = $(":input[type='text']:first", this).next().val();
            if(nc == "NC")nc = 0;
            $(this).parent().remove();
        });
    }
4

2 回答 2

0

我假设您仅tempPtr用于访问每个循环中的循环元素。如果是这种情况,您可以使用.filteron$(this)代替。

尝试这个:

$( ".inputQuantityUpdate" ).each(function( index ) {
    completed = $(this).filter(":input[type='text']:first").val();
    nc = $(this).filter(":input[type='text']:first").next().val();
    if (nc == "NC") nc = 0;
    $(this).parent().remove();
});
于 2013-11-08T21:00:12.640 回答
0

我假设您想从当前元素中获取第一个文本输入,在这种情况下,您的选择器将更改为:

completed   = $(":input[type='text']:first", this).val();
nc          = $(":input[type='text']:first", this).next().val();
于 2013-11-08T20:56:20.547 回答