2011-06-24 35 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