1

我正在尝试上传一些图像并将它们添加到 div 容器中。

我的问题是要上传 1000 多张图片,所以如果我将它们上传到同一个 div 滚动条会显示,但它对我的用户来说看起来不错。所以我想为这些图片添加分页。

我找到了适合我需要的这个站点示例 5),因为它实际上包含一个简单的 div,结构如下:

 <div id="paginationdemo" class="demo">
                    <h1>Demo 5</h1>
                    <div id="p1" class="pagedemo _current" style="">Page 1</div>
                    <div id="p2" class="pagedemo" style="display:none;">Page 2</div>
                    <div id="p3" class="pagedemo" style="display:none;">Page 3</div>
                    <div id="p4" class="pagedemo" style="display:none;">Page 4</div>
                    <div id="p5" class="pagedemo" style="display:none;">Page 5</div>
                    <div id="p6" class="pagedemo" style="display:none;">Page 6</div>
                    <div id="p7" class="pagedemo" style="display:none;">Page 7</div>
                    <div id="p8" class="pagedemo" style="display:none;">Page 8</div>
                    <div id="p9" class="pagedemo" style="display:none;">Page 9</div>
                    <div id="p10" class="pagedemo" style="display:none;">Page 10</div>
                    <div id="demo5">                   
                    </div>

 </div> 

它的脚本是:

 <script type="text/javascript">
   $(function () {
       $("#demo5").paginate({
           count: 10,
           start: 1,
           display: 7,
           border: true,
           border_color: '#fff',
           text_color: '#fff',
           background_color: 'black',
           border_hover_color: '#ccc',
           text_hover_color: '#000',
           background_hover_color: '#fff',
           images: false,
           mouse: 'press',
           onChange: function (page) {
               $('._current', '#paginationdemo').removeClass('_current').hide();
               $('#p' + page).addClass('_current').show();
           }
       });
   });

    </script>

这就是我动态上传图像的方式

 $.each(data.result, function (index, file) {
                    $('#p1').append("<img class='LoadclickImage' align='left' style='height:48px;width:75px;' src='Uploads/" + file.name + "' width='75' height='50'  href='Uploads/" + file.name + "' >");
                });

现在会发生什么,如果我添加它们附加到同一页面的图像并且列表正在增加,那么我如何将图像限制到特定的 div 并通过动态创建它来将它们添加到下一页,因为我不知道他们将上传多少个法师,如果超过则尝试将它们附加到下一页。

如果有人有更好和最简单的想法,他们可以分享。我喜欢听他们说:)

4

2 回答 2

1

您将不得不控制将图像附加到哪个“页面”div。您已经在循环中附加图像,所以您已经完成了一半。

可能有一种方法可以通过 jQuery 选择器做到这一点,但我没有那么多 jQuery kung-foo。因此,我使用 html 属性来跟踪“页面”div 是否已满。

在我的代码中,我正在附加

标签并使用一组数字。这种方式更容易测试,但与主要逻辑没有区别。

这是我的HTML...

<div id="p1" full="no" class="pagedemo _current" style="">Page 1</div>
<div id="p2" full="no" class="pagedemo">Page 2</div>
<div id="p3" full="no" class="pagedemo">Page 3</div>
<div id="p4" full="no" class="pagedemo">Page 4</div>
<div id="p5" full="no" class="pagedemo">Page 5</div>
<div id="p6" full="no" class="pagedemo">Page 6</div>

这是我的剧本...

<script>
    $(document).ready(function () {
        var images = 65;

        for(var i = 1; i <= images; i++)
        {
            var page = $('.pagedemo[full="no"]').first();

            $(page).append("<p>" + i + "</p>");

            if ($(page).children("p").length == 10)
            {
                $(page).attr('full', 'yes');
            }
        }
    });

</script>
于 2012-04-08T15:28:48.410 回答
1

这是我将如何解决它(但假设所有图像将在一个 ajax 请求中同时加载)。

<div id="paginationdemo" class="demo">
    <h1>Demo 5</h1>
    <div id="pagesContainer">
        <div id="p1" class="pagedemo _current"></div>
    </div>
    <div id="demo5"></div>
</div>

Javascript:

var imagesPerPage = 4, pageNumber = 1;

function onAjaxSucceded(data) {
    var pagesContainer = $('#pagesContainer'),
        imagesInPage = 0,
        divPage = $("#p1");

    $.each(data.result, function(index, file) {
        if (imagesInPage >= imagesPerPage) {
            imagesInPage = 1;
            pageNumber += 1;
            divPage = $('<div/>', {id : "p" + pageNumber}).addClass('pagedemo').hide().appendTo(pagesContainer);
        } else {
            imagesInPage += 1;
        }
        var src = 'Uploads/' + file.name;
        $('<img>', {src: src, href: src, "class": 'LoadclickImage', align: 'left'}).appendTo(divPage);
    });

    $("#demo5").paginate({
        count: pageNumber,
        start: 1,
        display: Math.min(7, pageNumber),
        border: true,
        border_color: '#fff',
        text_color: '#fff',
        background_color: 'black',
        border_hover_color: '#ccc',
        text_hover_color: '#000',
        background_hover_color: '#fff',
        images: false,
        mouse: 'press',
        onChange: function(page) {
            $('#paginationdemo ._current').removeClass('_current').hide();
            $('#p' + page).addClass('_current').show();
        }
    });
}

这是现场演示:http: //jsfiddle.net/protron/gbzsR/7/

于 2012-04-09T05:27:48.783 回答