博山政府网站建设哪家专业/长沙官网优化公司
文章目录
- 题目
- 示意图
- 实现代码
题目
关于Django如何解决for循环中长文本折叠内容的错误
示意图
这几天一直在纠结于Django的for循环,因为每次for循环后里边的class内容不变,以至于用jquery进行文本折叠时会出现把所有的文本都放到一起折叠,这令我非常苦恼,因为如果不折叠的话看似可以解决问题,但是一旦遇到长文本时,对用户体验非常不友好,所以我还是决定实现折叠功能,那么该如何实现呢?
通过调试,我发现之所以会出现这种情况是因为获取的class值一样,如果只在前端页面渲染完成之后只执行一次script代码就会出现这种情况,所以我的解决办法是,对每一次for循环都执行其对应的script代码,即对于每一个class都有不同的class值。
实现代码
{% for item in page.object_list %}
<!--实现了class的变化-->
<div class="comment{{item.reply.id}}">{{item.reply.answer}}
</div><script src="https://cdn.bootcss.com/jquery/2.1.2/jquery.min.js"></script>
<script>$(function() {var id = '{{item.reply.id}}';text_foled1('.comment' + id, 50, id);});function text_foled1(clas, num, id) {var num = num;var id1 = 'comment2' + id;var id2 = '.' + id1;var a = $("<a></a>").on('click', showText1).addClass('a-text').text("【展开】");var b = $("<a></a>").on('click', showText1).addClass('a-text').text("【折叠】");var p = $("<div></div>").addClass(id1);var str = $(clas).text();$(clas).after(p);if (str.length > num) {var text = str.substring(0, num) + "...";$(clas).html(text).append(a);}//这里有点区别,需要把其隐藏掉,否则会出现两个文本$(id2).html(str).append(b).hide();function showText1() {$(this).parent().hide().siblings().show();}}
</script>
{% endfor %}