如何在javascript中获取当前ul li的长度,当我尝试对它们进行排序时

How to get the current ul li's length in javascript , when i tried to sort them?

本文关键字:排序 javascript 获取 li ul      更新时间:2023-09-26
<ul id="types" style="list-type:none;">
<li id="categories" style="list-type:none;">1
<ul>
    <li style="list-type:none;">1</li><br/>
    <li style="list-type:none;">1</li>
</ul>
</li>
<li id="categories" style="list-type:none;">2
<ul>
    <li style="list-type:none;">2</li><br/>
    <li style="list-type:none;">2</li>
</ul>
</li>
<li id="categories" style="list-type:none;">3
<ul>
    <li style="list-type:none;">3</li><br/>
    <li style="list-type:none;">3</li>
</ul>
</li>
</ul>

我正在上下移动 li,当我这样做时,我已经编写了调用一个 jQuery _mouseStop函数(事件,noPropagation

(的代码(

在这个函数中,我正在编写

var tagetNode = this.currentItem[0].parentNode.id
if (this.element[0].id == "categories") {
    var targetlistlength = document.getElementById(targetListId).getElementsByTagName("li").length;
    // var targetlistlength = this.parentNode.getElementsByTagName("li").length;
    var PageIds = "";
    for (var i = 0; i < targetlistlength; i++) {
        PageIds += document.getElementById(targetListId).getElementsByTagName("li")[i].getAttribute("value") + ",";
    }
}

当我对子 Li 进行排序时,上述函数被调用,但它总是只获取第一个 Li 长度的第一个子 ul.. 我想要当前 ul li 的长度,我正在尝试排序

我也尝试使用注释行来获取 li 的长度,但我收到错误,因为 this.parentNode 未定义

任何人请建议我该怎么办

由于没有可用的工作演示,因此当 mouseStop 事件在控制台中发生时,您可以检查在该函数中使用console.log($(this));时获得的内容。如果您在控制台中获得了预期的li,则可以执行以下代码来获取其父级子项的长度。

alert($(this).parent().children().length);

不能有多个具有相同 id 的元素。尝试用类替换它们或使它们独一无二。

如果您有唯一的 id(例如类别-1、类别-2、...(,则 if 条件可能如下所示

if (this.element[0].id.match("^categories") != null) { ... }

或者,如果您使用类,则 if 条件可以是:

if (this.element[0].className.match("(^| )categories( |$)") != null) { ... }