1

このコードはjQueryによって生成されており、nレベルのulおよび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>

2番目のliを削除し始めると機能しますが、最初のliを削除し始めると機能しませんでした。jQueryステートメントに警告します

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

この場合、長さは 2 です

4

2 に答える 2

1

:IDは一意である必要があります

問題は、それがクラスであるために使用しているul#criteriaことです ul.criteriacriteria

jqueryIDセレクタークラスセレクターを確認してください

于 2012-10-09T17:13:35.930 に答える
1

ページmultiple elementsに同じ ID があり、IDセレクターを使用して要素を選択すると、セレクター エンジンは最初に見つかった ID を選択するだけです。

classの代わりにa を使用してみてくださいid

于 2012-10-09T17:16:06.467 に答える