[英]How to append <ul><li> element in between list of parent elements for some specific condition
我有一个元素列表,我想显示最多5个元素,如果总元素超过5个,则添加显示更多按钮。显示/隐藏部分已完成,但我坚持使用jquery定制此列表。
举例来说,这里列出了共有13个商品的品牌。
<ul class="search-filter" id="attributeLevel1Facet">
<li>brand1</li>
<li>brand2</li>
<li>brand3</li>
<li>brand4</li>
<li>brand5</li>
<li>brand6</li>
<li>brand7</li>
<li>brand8</li>
<li>brand9</li>
<li>brand10</li>
<li>brand11</li>
<li>brand12</li>
<li>brand13</li>
</ul>
我只想在总项目大于5的情况下使用jquery将此列表设为
<ul class="search-filter" id="attributeLevel1Facet">
<li>brand1</li>
<li>brand2</li>
<li>brand3</li>
<li>brand4</li>
<li>brand5</li>
<li class="search-opt hide">
<ul class="search-opt">
<li>brand6</li>
<li>brand7</li>
<li>brand8</li>
<li>brand9</li>
<li>brand10</li>
<li>brand11</li>
<li>brand12</li>
<li>brand13</li>
</ul>
</li>
</ul>
<c:if test="${fn:length(***) gt 5}">
<a data-role="more-options" class="more-option" title="more-option">More Options</a>
</c:if>
如果项目> 5,我想使用jquery将第一个列表更改为第二个列表。如果$("#attributeLevel1Facet > li").length > 5
,则应使用另一个<ul><li>
元素将其包装并添加更多选项按钮(上面的第二个列表)。
请帮我。
您可以检查li
元素的长度,然后创建一个新的ul如
var $lis = $('#attributeLevel1Facet li');
if ($lis.length > 5) {
var $ul = $('<ul class="search-opt"/>').append($lis.slice(5));
$ul.wrap('<li class="search-opt hide" />').parent().appendTo('#attributeLevel1Facet')
}
演示: 小提琴
你可以这样使用
$("#attributeLevel1Facet > li").filter(function() {
return $(this).index() > 4;
}).wrapAll("<li class='search-opt hide'><ul class='search-opt'></ul></li>");
在上面的代码中,filter将返回索引大于4的li元素。然后可以将它们包装为任何元素。
选中此选项-> jQuery加载前3个元素,单击“加载更多”以显示下5个元素
从答案中我认为您可以得到想要的
您可以尝试这样的事情
if($('li').length > 5){ var element='<li class="search-opt hide">'+ '<ul class="search-opt">'; $('li:nth-child(5)').after(element) }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <ul class="search-filter" id="attributeLevel1Facet"> <li>brand1</li> <li>brand2</li> <li>brand3</li> <li>brand4</li> <li>brand5</li> <li>brand6</li> <li>brand7</li> <li>brand8</li> <li>brand9</li> <li>brand10</li> <li>brand11</li> <li>brand12</li> <li>brand13</li> </ul>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.