1

innerHTML を使用して 25 ミリ秒ごとに更新される複数の div を含む div があります (パフォーマンス上の理由から)。イベント委任を使用してイベントをキャプチャしようとしましたが、クリック イベントをキャプチャするようには見えません。これは、コンテンツの更新速度のせいではないかと思います。どんなアイデアでも大歓迎です。

私のコード:

$(document).ready(function () {
    var canvas = $('#gCanvas')[0];

    $(document.body).delegate('a', 'click', function (e) {
        console.log(e.target);
    });

    var sprites = [];
    for (var i = 0; i < 100; i++) {
        sprites[i] = {x: i+10, y: i+10};
    }


    var doIt = function () {
        var s = '';

        for(var i = 0; i < sprites.length; i++) {
            var spr = sprites[i];
            spr.x++;
            spr.y++;

            s+= '<a id="s'+i+'" class="s" style="left:'+sprites[i].x+';top:'+sprites[i].y+'"></a>';
        }

        canvas.innerHTML = s;
    };
    //doIt();
    setInterval(doIt, 50);
});
4

1 に答える 1

1

jqueryを使えば簡単です。.live関数がありますが、十分に速いかどうかはわかりません。または、jquery ソースをチェックして .live() コードを見つけ、解決策を見つけることもできます。

アップデート

ゲームを作成しようとしている場合は、良いブラウザーには svg を使用し、悪いブラウザーには vml を使用してみてください。

于 2010-05-07T13:35:32.470 に答える