如何使用jquery获取ul> li项目的最后一个ID并添加具有新ID的新项目

时间:2019-01-15 09:18:47

标签: jquery

我有一个动态的嵌套列表 例如

<ul id="mylist" class="mylist">
  <li id="p-1">Item</li>
   <ul>
     <li id="p-3">Sub-Item</li>
        ( ...maybe more sub-elements)
   </ul>
  <li id="p-2">Item</li>
  <li id="p-3">Item</li>
...
</ul>

如何通过类mylist获取main-ul中“ li”元素的最后一个(最高)ID(包括其他嵌套的ul列表中的元素)?

以这种方式做的特里失败了

$(".addnew-listitem").click(function() {
var $div = $("ul#mylist > li[id^=\'p-\']:last");
var newnum = parseInt( $div.prop("id").match(/\d+/g), 10 ) +1;
var newItem = $("#"+$(this).data("orderunder")).clone(true).prop("id", "p-"+newnum );
 var $check = $("ul#mylist > li[id^=\'p-\']:last");
 $(newItem).appendTo("#"+$(this).data("orderunder"));
  $(".mylist").sortable("refresh");
});

如果加载页面并添加一个新项目,我将获得正确的下一个ID(4)。 此外,新商品还应正确添加新的ID p-4。 如果我想添加第二个,我又收到了旧的最后一个id 4,我在这上做错了什么?

感谢您解释其工作原理!

1 个答案:

答案 0 :(得分:0)

尝试以下- 您可以在其中使用>来获取直子而不是直子,并使用:last来获取最后匹配的li

$(function(){
    var $div = $("ul.mylist > li[id^=\'p-\']:last");
    alert($div.text()); // for text
    alert($div.attr('id')); // for id
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="mylist">
   <li id="p-1">Item p-1</li>
    <ul>
      <li id="p-3">Sub-Item sub-3</li>
        ( ...maybe more sub-elements)
   </ul>
 <li id="p-2">Item p-2</li>
 <li id="p-3">Item p-3</li>
</ul>