0

我的目标是在用户向下滚动时生成以下代码:

<?php
    // get all files
        $imagesDir = 'uploads/';
    $images = glob($imagesDir . '* {jpg,jpeg,png,gif,JPG,JPEG,PNG,GIG}', GLOB_BRACE);
    $imagesCount = count($images);
    for($i = 0 ; $i < $imagesCount ; $i++) {
        // select image 
        $randomIndex = array_rand($images); // select image index
        $file_title = $randomImage = $images[$randomIndex]; // use selected image
        unset($images[$randomIndex]); // remove selected image
        // print_r($images); // you can see what left in $images
        // show image
    }   
?>

<li class="item-thumbs span3 img">
   <!-- Fancybox - Gallery Enabled - Title - Full Image -->
   <a class="hover-wrap fancybox" data-fancybox-group="gallery" 
       title="<?php echo $randomImage ?>" href="<?php echo $randomImage ?>">
   <span class="overlay-img"></span>
   <span class="overlay-img-thumb font-icon-plus"></span>
   </a>
   <!-- Thumb Image and Description -->
   <img src="<?php echo $randomImage ?>" alt="{Failed To Load Item Description}">
</li>

此代码位于块内。我想生成随机图像并将它们显示在格式良好的区域中。现在,一切正常,除了我需要自动生成此代码,以便在用户滚动时显示更多...就像 Facebook 在您向下滚动时在墙上加载更多帖子一样。我尝试了很多脚本,但没有一个对我有用。

4

1 回答 1

0

您的查询答案是:第一件事 * 您必须在 javascript 中设置一个滚动处理程序,当用户向上或向下滚动时将触发该处理程序 * 您必须进行 ajax 调用,以便在调用滚动处理程序时为您获取结果 *最后一件事呈现你的ajax响应

但是您必须在滚动处理程序中管理用户向上或向下 b / c 每当用户向下滚动时您都需要数据

所以我放了一些代码示例,它使用jquery

滚动处理程序

var lastScrollTop = 0;
var scrollHandler = function () {
var st = $(this).scrollTop();
var pageHeight = $(document).height();
var pageScrolled = $(window).scrollTop();
var pageView = $(window).height();
if (st > lastScrollTop) {
    // downscroll code
    if (st > lastScrollTop && (pageScrolled >= (pageHeight / 2))) {
        // calling scroll     after half page scrolled
        //  do nothing
    } else {
        loadMore(); // it will be called only in scroll down
    }
}


lastScrollTop = st;

}

将ajax调用放在这个函数中

function loadMore() {
$(window).off("scroll", scrollHandler);
$.ajax({
    url: "",
    "data": '',
    success: function () {
        //  render you ajax response
        ....
        $(window).scroll(scrollHandler); // call event handle after first result render
    }

});

}

// 在窗口加载后附加滚动事件

$(window).load(function () {
    $(window).scroll(scrollHandler);
});

只有剩下的逻辑是您将如何确定加载了多少结果以及最后一个结果是什么

所以很少有逻辑最后在你身上放了一个额外的参数,它会告诉你这是 las 结果,在调用 loadMore() 之前,读取该参数并发送回 ajax 调用。

于 2013-07-25T09:04:17.393 回答