Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除最后一个<;之后的所有文本;李>;每个<;ul>;?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何删除最后一个<;之后的所有文本;李>;每个<;ul>;?

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=

我也有一个菜单和它们的子菜单。页面加载后。。该网站在子菜单的每一端生成随机文本

这是由firebug生成的当前标记:

<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 &gt; Sub Menu</a>
                    </li>

                    <li><a href="">Sub Menu &gt; 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 &gt; Sub Menu</a></li>
                <li><a href="">Sub Menu &gt; Sub Menu</a> 896346</li>
            </ul>

        </div>
        </li>

        </ul>
    </div>
</nav>

    • 90797
  • 896346
问题:文本90797896346是网站随机生成的文本。如何在每个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的类型。我明白了。。谢谢你,亚迪尼奥。。隐马尔可夫模型。。如果网站返回的是文本字符串而不是整数。。。你有别的方法吗?嗯,这是节点类型,它总是一个整数,它是如何在内部识别节点的?这不是节点的内容!谢谢你,亚迪尼奥。。你真棒!可能重复的