是否将内容从一个元素切换到下一个元素
Switch content from 1 element to next?
比方说,我在一个页面上有两个div元素(letdiv1和div2(。我正在动态获取内容。内容是文本,我希望内容以这样的方式填充2个div元素,即当div1空间不足时,内容显示在div2中。打个比方,这就像在笔记本上工作,笔记本的整个表面就是页面,div1和div2分别是左侧和右侧。一旦页面的一面完成,你就转到下一页,以此类推
其中一种方法可以是分割文本,并为每个div设置字数限制,这将导致从div1变为2,依此类推
我看过分页,但这不是我想要的。
但是,有更好的方法来实现这一点吗?也许喜欢使用div元素的高度属性来触发事件或类似的事情?或者有其他建议吗?
您可以使用此示例中的代码,它有4个固定大小的div
元素,并排显示(请参阅CSS(,并且在第一个div
中包含所有文本。代码将根据需要将文本重新分发给下一个div
,以避免溢出:
$(function() {
// Take all words from first div and let them overflow into any next div
var allwords = $('div.box').text().split(/'s+/);
$('div.box').each(function (index, div) {
var text = '';
var $div = $(div);
var height = Math.round($div.height());
allwords.slice().some(function (part, i) {
$div.text(text + (i ? ' ': '') + part); // try, and see what we get
// Detect overflow: when so, exit loop
if ($div.prop('scrollHeight') > height) return true;
text = $div.text();
allwords.shift();
});
// Restore text to last non-overflowing text
$div.text(text);
});
});
.box { width:100px; height:100px; border: 1px solid; display: inline-block; float: left }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="box">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer pellentesque dui ut nisl iaculis faucibus.
Mauris non diam consectetur metus accumsan sollicitudin. Quisque ornare euismod mi.
</div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
您可以检测div何时溢出,函数如下:
if (
element.offsetHeight < element.scrollHeight
|| element.offsetWidth < element.scrollWidth
)
{
// Overflow
}
else
{
// No overflow
}
您可以创建一个函数,将内容片段从第一个div逐渐分离到第二个div,直到溢出消失。
这是一个奇怪的解决方案,但它有效!我不建议在生产网站上使用它:P
$(function() {
function normalize() {
$('#div2').text('');
while ($('#div1')[0].scrollHeight > $('#div1')[0].clientHeight) {
// get words of the text
var words = $('#div1').text().split(' ');
// get last word
var lastWord = words.slice(-1);
// pour it to div2
$('#div2').text($('#div2').text() + lastWord);
// remove it from the array
words.length = words.length - 1;
// and pour the rest back to div1
$('#div1').text(words.join(' '));
}
}
$('button').click(normalize);
$('textarea').change(function() {
$('#div1').text($('textarea').val());
});
});
#div1 {
width: 100px;
height: 100px;
background-color: blue;
display: block;
word-break: break-all;
}
#div2 {
margin-top: 100px;
width: 100px;
height: 200px;
background-color: green;
display: block;
word-break: break-all;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea>
aaaa bbbb ccccccccc aaa bbb cccccccccccccc aa bbbbbb cccc aaaaaaaaaaaaaaa bbb ccccc aaaa bbb cccccccc aaaaaaa bbbbbbbbbbbbbbbb ccccc
</textarea>
<button>normalize</button>
<hr>
<div id="div1">
aaaa bbbb ccccccccc aaa bbb cccccccccccccc aa bbbbbb cccc aaaaaaaaaaaaaaa bbb ccccc aaaa bbb cccccccc aaaaaaa bbbbbbbbbbbbbbbb ccccc
</div>
<div id="div2">
</div>
我将尝试一个回调函数,您可以淡化第一个div,然后调用一个填充第二个div的函数:
$(".div1").fadeOut(200,callbackFunction(){$(".div2").html("some text")});
此外,您可以像这样修复<textarea maxlength="50">
的textarea
的文本限制
50
可以替换为任何数字。即使您需要动态长度,也可以使用JS
来实现这一点。
使用JS
计数字符数,一旦达到限制,将focus
切换到其他textarea
。
CCD_ 11或任何这样的MVC将有助于容易地解决这个问题。
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 表追加而不附加最后一个元素
- 滚动到容器中的下一个元素-几乎到了
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript获取上一个元素的内容
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 在数组中的一个元素上设置多个值
- 指令的模板必须只有一个根元素:With restrict E&替换true
- HTML JavaScript,我如何能够通过给每个元素一个不同的Id来使用JavaScript使这个函数工作
- 如何创建一个独立的 DOM 元素?一个不从父母那里继承 css 等
- 如何给图像元素一个“;选择“;使用Raphael.js查看
- 如何显示隐藏的
- 元素一个接一个或全部同时
- 使用"span"创建一个自定义的基于web的文本编辑器;元素——一个坏主意
- 引导旋转木马传递元素一个接一个
- 给所有元素一个匹配数组内容的ID
- 我如何得到Json数组元素一个接一个的jquery上不同的id'
- 一次淡入附加元素一个
- 如何使用AngularJS检索外部网站的内容(一个元素一个元素)