我一直陷入这种愚蠢的境地,我得到了一个这样的无序列表:
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>
我想获取unorder列表中每个li的文本和id,但是在item.text()代码部分我得到了当前的li文本和子文本(“li1li2”,“li2”等)。有什么建议吗?。
此致
答案 0 :(得分:2)
您可以使用.childNodes[0].nodeValue
从DOM元素(在您的案例中恰好是文本)中获取值第一个节点:
append += "<option value=" + item.prop("id") + ">" + item[0].childNodes[0].nodeValue + "</option";
答案 1 :(得分:0)
由于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>";
}