0

我在 html 中有以下结构(由于发布问题的格式问题,我没有在 ul 和 li 之前写初始标签)

<ul>
    <li id="list0">xyz
        <ul>
            <li id="list1">abc</li>
            <li id="list2">abc</li>
            <li id="list3">abc</li>
        </ul>
    </li>
</ul>

现在假设我只能将 id 作为 list2 传递给函数,并且该函数会执行一些 ajax 操作并给出响应 li id="list4">abc

我想将这个新添加的孩子附加到 ul 中,其中 li 的 ID 为“list2”。我尝试关注但失败的选择器是什么

function selectUl(id){
   $("#list"+id+"").parent().append('li id="list4">abc</li');  //inserts new list in parent ul 
   $("#list"+id+"").append('li id="list4">abc</li'); //inserts new list after current ul
   $('li id="list4">abc</li').insertAfter("#list"+id+""); //inserts new list after current ul
}

现在想在当前 ul 中插入新列表现在告诉我这样做,前提是我只能在该 ul 中传递列表的 id。

4

3 回答 3

0

我有点不确定你想在这里实现什么。

你得到一个 ajax 响应并且 ajax 响应有一个 ID?或者它是否具有您要附加的实际 HTML?

您是否只想在 ID 为“list3”的当前 LI 之后添加一个新的 LI?或者您想添加一个新的“外部”LI 来创建一个新的 UL 列表?

更新:

您不需要使用“insertAfter”,只需将其附加到 UL。像这样:

var list = document.getElementById("list0").getElementsByTagName("UL")[0]; // Chooses the first UL contained in the list0 LI
var newLI = document.createElement("LI");
newLI.id = "list4";
newLI.innerHTML = "abc";
list.appendChild(newLI);

因此,只需将参数 ID 放在适合此代码的位置即可。希望有帮助:-)

于 2012-08-30T05:58:45.853 回答
0
  $('#list2').after('<li>foo</li>');

或者在你的场景中:

function selectUl(id){
   $("#list"+id+"").after('<li id="list4">abc</li>');
}

jsFiddle 上的示例

于 2012-08-30T06:05:52.107 回答
0
$('<li id="list2">def</li>').insertAfter($(document).find("ul #list2"));
于 2012-08-30T06:12:55.187 回答