2011-06-24 37 views
2

我使用此代码,效果很好。现在我只需要更改输入名称,input1,input 2等等。循环中的问题

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#input1 > select.profissao").live('change', function(){ 
      $.ajax({ 
       type: "POST", 
       data: "data=" + $(this).val(), 
       url: "drop1.php", 
       success: function(html) { 
        $("#input1 > select.estatistica").html(html); 
       } 
      }); 
     }); 
}); 
</script> 

为什么这个版本不起作用?我已经检查了lint中的代码,并且没有检测到任何错误。 基本上,如果我复制上面的代码,并将input1更改为input2,效果很好,但我的目标是减少冗余。

<script type="text/javascript"> 
    $(document).ready(function() { 
     for (i=1; i<3; i++) { 
     $("#input"+i+" > select.profissao").live('change', function(){ 
      $.ajax({ 
       type: "POST", 
       data: "data=" + $(this).val(), 
       url: "drop1.php", 
       success: function(html) { 
        $("#input"+i+" > select.estatistica").html(html); 
       } 
      }); 
     }); 
     } 
    }); 
</script> 

编辑:输出是类似的东西<option value=2>Artes</option><option value=1>Humanidades</option>但这不是添加到HTML

与环路我的下拉简单停止工作

+0

你可以发布你的HTML,我有一种感觉,你可以处理这个没有每个输入的事件处理程序。 – Ben

回答

3

您可以尝试

<script type="text/javascript"> 
$(document).ready(function() { 
    for (i=1; i<3; i++) { 
     (function(idx){ 
      $("#input"+idx+" > select.profissao").live('change', function(){ 
      $.ajax({ 
       type: "POST", 
       data: "data=" + $(this).val(), 
       url: "drop1.php", 
       success: function(html) { 
       $("#input"+idx+" > select.estatistica").html(html); 
       } 
      }); 
      }); 
     })(i); 
    } 
}); 
</script> 

而你的函数在一个范围内得到相同的参考i

+1

我认为这是正确的。这是因为JavaScript关闭。一个很好的解释在这里https://developer.mozilla.org/en/JavaScript/Guide/Closures#Creating_closures_in_loops.3a_A_common_mistake – Equiso

+0

@Equiso是的,这是一个非常常见的错误... – YeJiabin

+0

是的,解决我的问题。谢谢:) – user455318

0

顶部和底部块的选择有不同的类是一个问题?

此外,连接方法似乎不太可维护。

或许可以考虑使用这样的事情

$('#input1, #input2, #input3').children('select.area').each(function() { 
     $(this).live(...); 
    }); 

编辑:也换出的HTML即选择的内容,也没有很好的支持,并导致了我相当多的错误,所以你可能要考虑重建每次选择

+0

不同类的选择?哪里? – user455318

+0

啊,你已经忍者编辑他们了,我看到;) –

+0

在第一篇文章我复制其他版本哈哈。谢谢 – user455318