jquery:如果eq索引大于列表中的元素数,则无效后列出eq

时间:2018-02-06 13:31:28

标签: jquery

这是工作小提琴: - code

var _listings = $("#listings .listingContent");
_listings.eq(4).after("<li class=\"ad\">x</li>");
_listings.eq(9).after("<li class=\"ad\">x</li>");

当我尝试在第9个索引之后插入li,即第10个元素时,我无法做到这一点,因为这里总共有9个元素。

有没有办法在最后一个可能的元素之后插入它,即第9个元素而不是第10个元素。

类似地,如果总li元素= 8并且有人试图在第10个元素之后插入,则应该在第8个元素之后插入。

2 个答案:

答案 0 :(得分:1)

jQuery eq基于0,所以如果你想在最后一个之后添加一个元素,你应该使用长度减1或last()

var _listings = $("#listings .listingContent");

_listings.eq(3).after("<li class=\"ad\">x</li>");
_listings.last().after("<li class=\"ad\">x</li>");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="listings">
  <li class="listingContent">1</li>
  <li class="listingContent">2</li>
  <li class="listingContent">3</li>
  <li class="listingContent">4</li>
  <li class="listingContent">5</li>
  <li class="listingContent">6</li>
  <li class="listingContent">7</li>
  <li class="listingContent">8</li>
  <li class="listingContent">9</li>
</ul>

答案 1 :(得分:0)

您可以使用var来获取集合的长度。

var count=_listings.length;
_listings.eq(count).after("<li class=\"ad\">x</li>");