JQuery限制div内的图像

时间:2012-04-08 14:30:53

标签: jquery image html paginate

我正在尝试上传一些图片并添加div容器。

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

我发现这个Siteexample 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并通过动态创建它们将它们添加到下一页不知道他们上传了多少法师,如果他们超过,他们会尝试将他们附加到下一页。

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

2 个答案:

答案 0 :(得分:1)

您将必须控制将图像附加到哪个“page”div。您已经将图像附加到循环中,因此您已经到了一半。

可能有一种方法可以通过jQuery选择器完成这一切,但我没有那么多的jQuery kung-foo。所以,我正在使用html属性来跟踪“page”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>

答案 1 :(得分: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/