脚本不能使用在$ .getJSON追加它之前不存在的ID

时间:2015-06-06 04:01:31

标签: javascript jquery

由于JSON的加载,此脚本无法正常工作:

$(function(){
    $('#fresh-button').click(function(){
        $('.blackout').fadeIn(300);
        $('.fresh-div').fadeIn(300);  
        setTimeout(function(){
            $('.blackout').fadeOut(300);
            $('.fresh-div').fadeOut(300);       
        },500);    
    })
})

我有一个id=fresh-button的div,在$ .getJSON附加后才会存在:

$.getJSON('fresh_posts.php',function(data){
    data.freshposts.forEach(function(post){
      var post = '<div id="fresh-button"><div>';
      $('.main').append(post);
    })
  })

2 个答案:

答案 0 :(得分:2)

使用事件委派来绑定点击处理程序,但您还应将id更改为class,因为id必须是唯一的。有关事件委派的信息,请参阅jquery .on() function的文档。

$('.main').on('click', '.fresh-button', function(){

...

var post = '<div class="fresh-button"><div>';

答案 1 :(得分:1)

您无法侦听尚不存在的元素,但您可以使用事件委派来侦听其父元素:

 $('.main').on('click', '#fresh-button', function() { // ...