1

我每 10 分钟使用 setinterval 运行一次 ajax 调用。该调用是从 php 页面获取新的帖子数据并将其放入变量中。当我想加载新的帖子数据时,我会单击一个链接,它将预先添加到页面中。

我遇到的问题是,如果页面处于非活动状态 30 分钟,它会运行 ajax 调用 3 次(每次分钟)。然后,当我单击链接加载新帖子时,它们被加载了 3 次。

我需要它们只加载一次。

这是我的代码。

    var getNewPosts = function() {
    $.ajax({
        type: 'GET',
        url: 'interactions/get_new_posts.php',
        async: true,
        cache: false,
        //dataType: 'json',
        success: function(results) {
            var data = results;
            // New Posts
            var instagramPosts = $(data).find('#instagramPosts').html();


            //Load new Instagram Posts
            $(document).one('click', '.instagram_menu', function(e) {
                $('#feed_wrap').prepend(instagramPosts).isotope( 'reloadItems' ).isotope({ sortBy: 'original-order' });
                console.log(instagramPosts);
            });

        },
        error: function(results) {
            //console.log('true', results);


        }
    });
};

var interval = 1000 * 60 * 10; // Last int is minutes
setInterval(getNewPosts, interval);

所以你可以看到它将新帖子加载到变量 instagramPosts 中。然后,当我单击 .instagram_menu 时,它会将这些新帖子放在前面。

再一次,问题是,如果我让它坐下来,如果它多次调用这个函数,然后我点击 .instagram_menu,它会加载这些帖子的函数被调用的次数。

我该去哪里?我想指出正确的学习方向,不要只给我代码就可以了。谢谢

4

1 回答 1

0

我会取消绑定点击然后再次绑定。我不确定“一个”是做什么的?

setInterval(bang, 1000);


function bang(){

$('#clickme').unbind('click');
$('#clickme').one('click', function(){

    alert('bang');

});


} 
于 2013-04-24T16:11:32.973 回答