我一直陷入这种愚蠢的情况,我得到了这样的无序列表:
var liList = $("#first").find("li");
var append = "";
for(var i =0; i< liList.length; i++){
var item = $(liList);
append += "<option value=" + item.prop("id") + ">" + item.text() + "</option";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="first">
<li id=1>
li 1
<ul>
<li id=2> li 2</li>
</ul>
</li>
</ul>
我想在无序列表中获取每个 li 的文本和 id,但在 item.text() 代码部分中,我得到了当前的 li 文本和子文本("li1li2"、"li2"等)。有什么建议吗?
问候
您可以使用 .childNodes[0].nodeValue
从 DOM 元素(在您的情况下恰好是文本)中获取值第一个节点:
append += "<option value=" + item.prop("id") + ">" + item[0].childNodes[0].nodeValue + "</option";
由于 liList
是一个包含所有 li
元素的数组,因此您必须遍历循环中的每个元素:
for(var i = 0; i < liList.length; i++) {
// retreive each element from the array
var item = $(liList[i]);
append += "<option value=" + item.prop("id") + ">" + item.text() + "</option>";
}