对于jquery中的循环。我需要使用增量运行脚本20次

时间:2012-10-01 08:10:57

标签: javascript jquery

我不知道jquery中的循环。我希望从product1到product20的循环运行以下代码,如果quantity1到quantity20没有值则检查相同,然后将其设置为1.

$('#product1').change(function() {
    if(  $('#quantity1').val().length == 0 ){
        $('#quantity1').val("1");
    }
});

$('#product2').change(function() {
    if(  $('#quantity2').val().length == 0 ){
        $('#quantity2').val("1");
    }
});

提前谢谢。

4 个答案:

答案 0 :(得分:3)

我认为each方法在这里是最好的解决方案,因为你需要一个匿名函数来创建一个包含每个迭代值的closuse(因为事件处理程序稍后运行,每个都需要它自己的版本的循环计数器):

$.each(new Array(20), function(i){
  $('#product' + (i+1)).change(function() {
    var q = $('#quantity' + (i+1));
    if (q.val().length == 0 ){
      q.val("1");
    }
  });
});

答案 1 :(得分:1)

您可以尝试为idproduct

开头的所有输入添加事件处理程序
$('input[id^="product"]').change(function() {
    var len=$(this).attr('id').length;
    var q='#quantity'+$(this).attr('id').substr(7);
    if($(q).val().length == 0 ){
        $(q).val(1);
    }
});

DEMO

答案 2 :(得分:0)

阅读this以获取有关jquery中循环的更多信息。

使用选择器开始选择控件。请阅读this了解详情。

您可以使用如下的jQuery函数:

$('input[id^="product"]').each(function(index) {
$(this).change(function() {
            if(  $(this).val().length == 0 ){
                $(this).val("1");
            }
});
}

答案 3 :(得分:0)

只需使用普通的Javascript循环

for (i=0; i<5; i++)
{
  $('#product'+i).change(function() {
    if(  $('#quantity'+i).val().length == 0 ){
        $('#quantity'+i).val("1");
    }
});
}