我有一个动态的嵌套列表 例如
<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,我在这上做错了什么?
感谢您解释其工作原理!
答案 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>