Javascript 如何删除最后一个<;之后的所有文本;李>;每个<;ul>;?
我也有一个菜单和它们的子菜单。页面加载后。。该网站在子菜单的每一端生成随机文本 这是由firebug生成的当前标记:Javascript 如何删除最后一个<;之后的所有文本;李>;每个<;ul>;?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我也有一个菜单和它们的子菜单。页面加载后。。该网站在子菜单的每一端生成随机文本 这是由firebug生成的当前标记: <nav class="shopMenuHover"> <div id="bx_incl_area_5_1"> <ul> <li><a href="#" >First Menu</a> <div class="" style=
<nav class="shopMenuHover">
<div id="bx_incl_area_5_1">
<ul>
<li><a href="#" >First Menu</a>
<div class="" style=""><h2><a href="#">First Sub Menu</a></h2>
<ul>
<li>
<a href="">Sub Menu > Sub Menu</a>
</li>
<li><a href="">Sub Menu > Sub Menu</a> 90797</li>
</ul>
</div>
</li>
<li class="firstLevel hasSubmenu instrumentarium-en-fresen">
<a href="#" class="firstLevel">Second Menu</a>
<div><h2><a href="">Second Menu</h2>
<ul>
<li><a href=""><font><font>Sub Menu > Sub Menu</a></li>
<li><a href="">Sub Menu > Sub Menu</a> 896346</li>
</ul>
</div>
</li>
</ul>
</div>
</nav>
-
-
- 90797
-
- 896346
问题:文本90797和896346是网站随机生成的文本。如何在每个ul中每一个li>a之后删除这些文本
这是我当前使用的jquery,它只选择标记中的文本:
<script type="text/javascript">
$(document).ready(function() {
$(".shopMenuHover ul li:last-child > a").css( "border", "2px solid red");
});
</script>
$(文档).ready(函数(){
$(“.shopMenuHover ul li:last child>a”).css(“边框”,“2倍纯红”);
});
输出:删除每个最后一个子项标记后的所有文本
请帮助我…您可以使用
contents()
选择所有节点,包括textnodes,然后使用filter()
仅获取锚外部的textnodes,并移除它们
$(".shopMenuHover ul li:last-child").contents().filter(function() {
return this.nodeType === 3;
}).remove();
另一个选项是将
li
的html
设置为仅a
$(".shopMenuHover ul li:last-child").each(function(){
var $this = $(this);
$this.html($this.children("a"));
});
这还将清除元素中除
a
之外的任何其他内容,而不仅仅是文本节点。以下是使用可见性属性对CSS执行此操作的方法:
.shopMenuHover ul li:last-child{
visibility:hidden;
}
.shopMenuHover ul li:last-child > *{
visibility:visible;
}
注意:使用*
选择器,这样即使
包含链接以外的内容,它也可以工作。您好,您的代码可以工作。。我可以再问一下这个.nodeType==3是如何工作的吗?@Redshot-它根据类型过滤节点,3是textNodes的类型。我明白了。。谢谢你,亚迪尼奥。。隐马尔可夫模型。。如果网站返回的是文本字符串而不是整数。。。你有别的方法吗?嗯,这是节点类型,它总是一个整数,它是如何在内部识别节点的?这不是节点的内容!谢谢你,亚迪尼奥。。你真棒!可能重复的