我总是使用tempClass
来迭代某些内容并选择第一个子文本输入。我现在遇到了奇怪的问题。我一直在寻找,但没有成功找到正确的方法。
代码段
$( ".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并且第一次迭代完成是正确的,但不是之后。 由于某种原因,这是行不通的。解决这个问题的最佳方法是什么?
更新: 标记的解决方案有效。我应该发布我抓住的其他字段,因为它们不起作用。当迭代中只有1个元素“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();
});
}
答案 0 :(得分:0)
我假设您想从当前元素中获取第一个文本输入,在这种情况下,您的选择器将更改为:
completed = $(":input[type='text']:first", this).val();
nc = $(":input[type='text']:first", this).next().val();
答案 1 :(得分:0)
我假设您只是使用tempPtr
来访问每个循环中的循环元素。如果是这种情况,您可以在$(this)
上使用.filter
代替。
试试这个:
$( ".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();
});