我有一个嵌套列表。
<ul id="menu-main-menu" class="nav sn-nav">
<li id="menu-item-38" class="menu-item menu-item-type-yawp_wim menu-item-object-yawp_wim menu-item-38">
<div class="yawp_wim_wrap">
<div class="widget-area">
<div id="custommetawidget-3" class="yawp_wim_widget customMetaWidget">
<span class="yawp_wim_title"></span>
<ul>
<li><a href="1">Site Admin</a></li>
<li><a href="2">Log out</a></li>
</ul>
</div>
</div>
</div>
</li>
<li>
<a href="3">test</a>
</li>
</ul>
我想删除第一个 <li id='menu-item-38'>
的所有元素但离开<a>
.
就像第二个<li>
。
我发现了一个类似的链接:http://jsfiddle.net/yJrb7/1/
但它一直不起作用。
var li = document.getElementsByClassName('menu-item')[0];
var links = document.getElementsByTagName('a');
for(var i=0;i<li.childNodes.length;i++){
if(li.childNodes[i].nodeName!=links)
li.removeChild(li.childNodes[i--]);
}
编辑:
嘿伙计们,对不起,我的错,我没说清楚。
我实际上需要的是
<ul id="menu-main-menu" class="nav sn-nav">
<li><a href="1">Site Admin</a></li>
<li><a href="2">Log out</a></li>
<li><a href="3">test</a></li>
</ul>
最佳答案
window.onload = function() {
//declare an instance of DocumentFragment Type;
var fragment = document.createDocumentFragment();
var liList = document.getElementById("menu-item-38").querySelectorAll("li");
for (var i = 0; i < liList.length; i++) {
//copy these li into the fragment
fragment.appendChild(liList[i]);
}
var removeObj = document.getElementById("menu-item-38");
var parentElement = removeObj.parentNode;
//remove li whose id id [menu-item-38]
parentElement.removeChild(removeObj);
//add fragment to the parmentElement
parentElement.appendChild(fragment);
}
关于javascript - jQuery/JavaScript : how to remove all elements in the first <li> except <a>text</a>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38951224/