1

次のコードがあります。

<?php
$i = 5;
while($i > 0){
echo "
<input type = 'submit' value = '$i' id = '$i'>
";
$i--;
}
?>
<script type = 'text/javascript' src = 'js/jquery.js'></script>
<script type = 'text/javascript'>
$(document).ready(function(){
var i = 5;
while(i > 0){
$('#'+i).live('click',function(){
alert(i);
});
i--;
}
});
</script>

ボタンをクリックすると、JavaScript はクリックしたボタンの ID を警告する必要があります。しかし、どのボタンをクリックしてもアラート 0 が表示されます。while ループのインクリメント値が関数内で機能していないと考えています。id は何をすべきか?

4

1 に答える 1

1

これは、変数のクロージャー スコープiの一部が原因です。

$(document).ready(function(){
    var i = 5;
    while(i > 0){
        (function(idx){
            $('#'+idx).live('click',function(){
                alert(idx);
            });
        })(i)
        i--;
    }
});
于 2013-08-22T11:11:55.597 に答える