定位元素检查内容长度并从span中删除类

时间:2014-03-14 20:44:07

标签: jquery

我遇到了针对特定元素和删除类的问题。在下面的HTML中,我正在查看ul> li> ul,检查它是否有值,然后需要从span中第一个lu的标记中删除该类。使用下面的示例,检查第一个ul> li> ul,它是空的,所以我会从" Home"的标签中删除js类。我的问题是,这必须是动态的,我不能只指定" Home"或"关于我"。

<ul class="Nav">
    <li>
         <span class="scChromeData"></span>
         <span id="fld_A0F4D47685ED4" class="WebInput">
             <a class="children js" href="/">Home</a>
         </span>
         <ul class="NavChild hide js" style="display: none;"></ul>
    </li>
    <li>
    <li>
    <li>
    <li>
        <span class="scChromeData"></span>
        <span id="Span1" class="WebInput">
            <a class="children js" href="/">About me</a>
        </span>
        <ul class="NavChild hide js" style="display: none;"></ul>
    </li>
</ul>

这是我写的jquery:

if ( $('li > ul').children().length > 0 ) {
     $( "li > span > a.js" ).removeClass( "js" )
}

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

尝试

$("li > ul").each(function(){
   if($(this).children().length > 0){
        $(this).parent().find("span a.js").removeClass("myClass yourClass")
   }

})

Fiddle

答案 1 :(得分:0)

很确定这应该适合你。

$("ul li ul").each(function()
{
    if($(this).html() == "")
    {
        $(this).prev().children("a").removeClass("js");
    }
});

答案 2 :(得分:0)

DEMO

$("ul.Nav > li > ul").each(function(){
    $this = $(this);
    if (!$.trim($this.html()))  // Check if it's empty ignoring whitespaces
    {
        $this                   // The UL
            .closest('li')      // Find it's closest parent LI
            .find('.js')        // Find all instances of class 'js' within the LI
            .removeClass('js'); // Remove it
    }
});