在事件不处理jquery

时间:2013-07-27 08:32:04

标签: jquery events

我真的不明白为什么我的on事件不适用于jquery。 html是在处理程序之后生成的,但必须有效:

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 个答案:

答案 0 :(得分:2)

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

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

委派活动的优势在于他们可以处理来自的活动   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免频繁附加和删除事件处理程序reference

答案 1 :(得分:2)

尝试

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