jQuery分页按div高度(非项目) [英] jQuery Pagination by div height (not item)

查看:89
本文介绍了jQuery分页按div高度(非项目)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对使用jQuery根据内容的高度和div而不是按项目数为内容创建自动分页感兴趣.我能够找到的大多数分页示例都是基于要分页的项目数,而不是包含div的高度和内容的高度.此解决方案不适用于内容长度不一的

I am interested in using jQuery to create automatic pagination for content based on the height of the content and the div, rather than by number of items. Most pagination examples I have been able to find are based on the number of items to be paginated, rather than the height of the containing div and the height of the contents. This solution does not work well with content of varying length.

有人知道现有的解决方案将根据高度而不是项目编号对内容进行分页吗?理想情况下,它将是一种将标签内的内容(例如跨多个页面的长段)拆分的解决方案.

Do anyone know of an existing solution that will paginate content based on height rather than item number? Ideally it would be a solution that would split content within a tag, such as a long paragraph across multiple pages.

我在下面包括了一些虚拟代码.或者,可以在此处访问代码: 示例

I have included some dummy code below. Alternatively, the code can be accessed here: Example, Code

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<style type="text/css" media="screen">
body {background-color:white; font:16px Helvetica, Arial; color:black;}
.pagination {margin:auto; display:block; height:275px; width:300px; position:relative; overflow:hidden; border:1px solid black;}
</style>
</head>
<body>
<div class="pagination">
  <p>The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature.</p>
  <p>No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen.</p>
  <p>(Representatives and direct Taxes shall be apportioned among the several States which may be included within this Union, according to their respective Numbers, which shall be determined by adding to the whole Number of free Persons, including those bound to Service for a Term of Years, and excluding Indians not taxed, three fifths of all other Persons.) (The previous sentence in parentheses was modified by the 14th Amendment, section 2.) The actual Enumeration shall be made within three Years after the first Meeting of the Congress of the United States, and within every subsequent Term of ten Years, in such Manner as they shall by Law direct. The Number of Representatives shall not exceed one for every thirty Thousand, but each State shall have at Least one Representative; and until such enumeration shall be made, the State of New Hampshire shall be entitled to chuse three, Massachusetts eight, Rhode Island and Providence Plantations one, Connecticut five, New York six, New Jersey four, Pennsylvania eight, Delaware one, Maryland six, Virginia ten, North Carolina five, South Carolina five and Georgia three.</p>
  <p>When vacancies happen in the Representation from any State, the Executive Authority thereof shall issue Writs of Election to fill such Vacancies.</p>
  <p>The House of Representatives shall chuse their Speaker and other Officers; and shall have the sole Power of Impeachment.</p>
</div>
<ul>
    <li>Previous</li>
    <li>Next</li>
</body>
</html>

推荐答案

听起来您想一次加载所有内容,但一次只向用户显示一点内容.对HTML内容服务器端进行分页实际上是不可行的,并且在任何情况下都与jQuery没有任何关系.

It sounds like you want to load all the content at once, but only show a little bit of it at a time to the user. Paginating HTML content server side isn't really feasible, and wouldn't have anything to do with jQuery in any case.

好的UX是只使用滚动条,而不是尝试重新创建上/下页面.就是说,如果您绝对必须这样做,那么您需要这样的东西:

Good UX would be to just use a scroll bar instead of trying to reinvent page up/down. That said, if you absolutely must do this, then you want something like this:

$('.pagination').children().wrapAll('<div class="content"/>');
$('.next').click(function() {
    var current = ($('.content').css('margin-top') || '0px');
    $('.content').css('margin-top',current.substring(0,current.length-2) - $('.pagination').height() + 'px');
});

基本思想是使用overflow: hidden保持分页div,并使用负边距上下移动其中的内容.

The basic idea is to keep the pagination div that you have with overflow: hidden and move the content inside of it up and down using negative margins.

再过一次,这是糟糕的UX.只需使用滚动条即可.

One more time though, this is bad UX. Just use a scrollbar.

这篇关于jQuery分页按div高度(非项目)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆