2013-07-27 41 views
1

我不明白为什么我的事件不适用于jQuery。 处理程序后,将生成HTML,但它必须工作:关于事件不处理jquery

Calendar = function(){ 
    this.init = function(elem, path, callback){ 
    this.elem = elem; 
    $.ajax({ 
     url:path, 
     type:'GET', 
     context: this, 
     success:function(data){ 
      this.data = data; 
      callback(); 
     } 
    }) 
} 

    this.generateBase = function(){ 
     var base = '<div class="row-fluid" >'; 
     base += '<div class="span3" id="month" ></div>'; 
     base += '<div class="span9" id="week" ></div>'; 
     base += '</div>'; 
     $(this.elem).html(base); 
    } 
} 

$('#month').on('click',function(){ 
alert('aa'); 
}); 

我用它像

<script type="text/javascript" > 
$(document).ready(function(){ 
    var calendar = new Calendar(); 
    calendar.init('#calendar',path,function(){ 
     calendar.generateBase(); 
    }); 
}); 
</script> 

我真的不明白为什么有上点击毫无戒备

感谢您的帮助

回答

2

您需要将事件委托给动态添加元素的父级,如果您确实知道父级可以委派给文档。

$(document).on('click', '#month',function(){ 
    alert('aa'); 
}); 

委托的优势在于他们可以处理来自被添加到该文件在稍后的时间 后代元素活动事件。通过 挑选一个在连接了委托事件处理程序时保证存在的元素,可以将委派事件用于 ,避免需要频繁附加和删除事件处理程序reference

2

尝试

$(document).on('click','#month',function(){ 
alert('aa'); 
}); 
+0

感谢它的作品既响应 – Ajouve