Javascript 大量dom元素的问题

Javascript 大量dom元素的问题,javascript,jquery,Javascript,Jquery,我对DOM元素有问题,我需要添加2000个块。我试图通过setTimeout来实现这一点,但是事件不能与这些元素一起工作。谁知道我犯了什么错误 function init(){ $('#regions').prepend("<ul></ul>"); setTimeout(function(){ var opt=$('#regions ul'); for(var i=0; i<50; ++i){

我对DOM元素有问题,我需要添加2000个块。我试图通过setTimeout来实现这一点,但是事件不能与这些元素一起工作。谁知道我犯了什么错误

function init(){ 
    $('#regions').prepend("<ul></ul>"); 
    setTimeout(function(){ 
        var opt=$('#regions ul'); 
        for(var i=0; i<50; ++i){ 
            for(var j=0; j<50; ++j) 
                opt.append('<li class=\"field\"></li>'); 
        } 
    }, 0); 
} 
函数init(){
$(“#区域”)。前缀(“
    ”; setTimeout(函数(){ var opt=$(“#区域ul”);
    对于(var i=0;i,因为您使用的是jquery,通过在页面加载之后加载元素,您需要将事件添加到元素中

    编辑://我说绑定,但想到了live

    假设所有元素都有一个名为“added”的类,只是为了使事情更简单

    然后通过执行以下操作绑定悬停事件:

    $(".added").live("mouseover",function(){
    //do stuff
    });
    

    因为您使用的是jquery,所以通过在页面加载后加载元素,您需要将事件添加到元素中

    编辑://我说绑定,但想到了live

    假设所有元素都有一个名为“added”的类,只是为了使事情更简单

    然后通过执行以下操作绑定悬停事件:

    $(".added").live("mouseover",function(){
    //do stuff
    });
    

    首先构建要插入的完整HTML,然后在单个操作中完成

    function init(){ 
        var html =[];
        for(var i=0; i<50; ++i){
           for(var j=0; j<50; ++j)
               html.push('<li class=\"field\"></li>');
        } 
    
        $('#regions').prepend("<ul>" + html.join('') + "</ul>"); 
    } 
    
    函数init(){
    var html=[];
    
    对于(var i=0;i首先构建要插入的完整HTML,然后在单个操作中完成

    function init(){ 
        var html =[];
        for(var i=0; i<50; ++i){
           for(var j=0; j<50; ++j)
               html.push('<li class=\"field\"></li>');
        } 
    
        $('#regions').prepend("<ul>" + html.join('') + "</ul>"); 
    } 
    
    函数init(){
    var html=[];
    
    对于(var i=0;i,您可以使用jQuery的live方法。在它的帮助下,您可以将事件绑定到元素集,即使它们可能稍后添加

    例如:

    $('#regions ul li').live('mouseover', function() {
      // Live handler called.
    });
    

    请参阅此处的更多信息:

    您可以使用jQuery的live方法。在它的帮助下,您可以将事件绑定到元素集,即使稍后可能会添加这些元素

    例如:

    $('#regions ul li').live('mouseover', function() {
      // Live handler called.
    });
    
    请参见此处的更多信息:

    一些快速信息:

  • 为什么只有两倍的
    for
    循环而不是1
  • 您应该看看AlfonsoML的建议,即首先构建整个HTML字符串,然后将其插入DOM
  • 虽然
    live
    确实很方便,但我通常建议改用
    $(“#regions”).delegate('li','click',function(e){…})
    live
    做同样的事情,并且在DOM上更干净
  • 一些简单的东西:

  • 为什么只有两倍的
    for
    循环而不是1
  • 您应该看看AlfonsoML的建议,即首先构建整个HTML字符串,然后将其插入DOM
  • 虽然
    live
    确实很方便,但我通常建议改用
    $(“#regions”).delegate('li','click',function(e){…})
    live
    做同样的事情,并且在DOM上更干净

  • 您可以发布一些代码吗?这通常是一个很好的开始…您可以发布一些代码吗?这通常是一个很好的开始…但是如何使用绑定添加悬停事件?但是如何使用绑定添加悬停事件?