0

したがって、基本的に私はJQueryでたくさんのボタンを作成し、それらすべてにいくつかの一般的な「onclick」機能を提供したいと考えていますが、クリックしたボタンに関する一意の情報をその機能に知らせたいと考えています。以下の方法を使用すると、ボタンが押されたかどうかに関係なく、「このバグにより、頭を壁に 10 回打ち付けたくなる」という警告メッセージが出力されます。なんてこった、男?ご協力いただきありがとうございます!

function createButtons()
{
 for(var i=0; i<10;i++)
 {
  $('#Mystical_land_of_buttons').append('<button class="'+i+'">'+i+'</button>');
  $('button.'+i).click(function(){gimmeYoDigits(i);});
 }
};

function gimmeYoDigits(id)
{
 alert("This bug makes me want to beat my head against a wall "+id+" times.");
}
4

2 に答える 2

0

これにはクロージャーを使用する必要があります。

for(var i=0; i<10;i++) {
    // ...
    (function(i) {
        $('button.'+i).click(function(){gimmeYoDigits(i);});
    })(i);
于 2013-10-30T15:57:07.247 に答える
0

これはi、クリック関数が実行されたときに、変数が予期したものではなくなったためです。次のことができます。

var btn = $('<button>'+i+'</button>');
$('#Mystical_land_of_buttons').append(btn);
btn.data('id',i).click(function(){gimmeYoDigits($(this).data('id'));});
于 2013-10-30T15:57:15.880 に答える