2013-07-27 6 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

Смежные вопросы