1

我有这个由 jQuery 生成的代码,并且可以是 ul 和 n-list 项的 n 级

<ul id="criteria">
<li>
    Goal
    <img id="add_criterion" class="add_criterion" src="../images/icons/add-icon.png">
    <ul id="1" class="criteria">
        <li id="1">
        criteria 1
            <ul id="2" class="criteria">
                <li id="2"> criteria 1
                    <ul id="3" class="criteria">
                       <li id="3">criteria 1</li>
                       <li id="4">criteria 2</li>
                    </ul>
                </li>
                <li id="3"> criteria 2</li>
            </ul>
        </li>
        <li id="2"> criteria 2</li>
    </ul>
</li>
</ul>

我想删除对应于它的id和level的li,我写了这个函数,其中level是ul的id,i是li的id

function removeElementLi(i,level){
// if one list item in un order list

if($("ul#criteria ul#"+level+" li").length ==1){
    $("ul#criteria ul#"+level).remove();
}else{
    $("ul#criteria ul#"+level+" li#"+i).remove();
}   
}

但它没有用,我很感激任何帮助。

我将功能更改为

if($("ul[id="+level+"][class=criteria] li").length ==1){
    $("ul[id="+level+"][class=criteria]").remove();
}else{
    $("ul[id="+level+"][class=criteria] li#"+i).remove();
}

但是对于这个 html 代码

 <ul id="criteria">
    <li>Goal
    <img id="add_criterion" class="add_criterion" src="../images/icons/add-icon.png">
        <ul id="1" class="criteria">
            <li id="1">criteria 1</li>
            <li id="2">criteria 2</li>
        </ul>
    </li>
 </ul>

当我开始删除第二个 li 时,它可以工作,但是当我开始删除第一个 li 时,它不起作用。我提醒 jQuery 语句

ul[id=1][class=criteria] li#1

在这种情况下长度为 2

4

2 回答 2

1

注意:ID 必须是唯一的

问题是你正在使用ul#criteria它应该是ul.criteria因为它criteria是一个类

请检查jquery id 选择器类选择器

于 2012-10-09T17:13:35.930 回答
1

当您multiple elements在页面上有相同的 id 并使用ID选择器选择一个元素时,选择器引擎只会选择遇到的第一个 id。

尝试使用 aclass而不是id

于 2012-10-09T17:16:06.467 回答