1

我真的不明白为什么我的 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>

我真的不明白为什么点击时没有警报

谢谢你的帮助

4

2 回答 2

2

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

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

委托事件的优点是它们可以处理来自以后添加到文档的后代元素的事件。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需要,参考.

于 2013-07-27T08:34:57.823 回答
2

尝试

$(document).on('click','#month',function(){
alert('aa');
});
于 2013-07-27T08:35:08.840 回答