1

我有一个包含多个 div 的 div,其中使用 innerHTML 每 25 毫秒更新一次(出于性能原因)。我曾尝试使用事件委托来捕获事件,但我似乎没有做任何事情来捕获点击事件。我认为这可能是由于内容更新的速度。任何想法都会非常受欢迎。

我的代码:

$(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 回答