2014-07-03 30 views
0

我想添加一個名爲「動畫」的類到子div只有當父李有一個類稱爲「當前」。此外,如果父李不顯示「當前」類,我試圖刪除「動畫」類。如果父李具有課程追加類到子元素

$(document).ready(function() { 
if ($('ul.itemwrap li').hasClass('current')) { 
    $("ul.itemwrap li").find(".caption-text").addClass("animated"); 
    } 
else { 
$("ul.itemwrap li").find(".caption-text").removeClass("animated"); 
    } 
}); 

問題* 代碼工作,有點,但是,這只是增加了類的所有子(.caption文本)的元素,以及不刪除它們時的「當前」類在整個輪播循環中添加和刪除。

的Html * <ul class="itemwrap"> <li class="current"> <img src="images/img1.jpg" alt="img-description"> <div class="caption"> <div class="caption-holder"> <div class="container"> <div class="caption-text"> <h1>title</h1> </div> </div> </div> </div> </li> <li> <img src="images/img2.jpg" alt="img-description"> <div class="caption"> <div class="caption-holder"> <div class="container"> <div class="caption-text"> <h1>Title</h1> </div> </div> </div> </div> </li> <li> <img src="images/img3.jpg" alt="img-description"> <div class="caption"> <div class="caption-holder "> <div class="container"> <div class="caption-text"> <h1>Title></h1> </div> </div> </div> </div> </li> </ul>

+3

而且,這個問題到底是什麼?我們必須看到你的HTML,並告訴我們什麼是不工作的,知道這裏出了什麼問題。對於SO而言,一個可接受的問題必須對預期行爲和觀察到的行爲有清晰的描述,幷包含足夠的信息供人們診斷問題。 – jfriend00

+0

也看起來像你已經把這段代碼放在準備好的文檔中,當文檔完成加載時這隻會被調用一次,這可能不是你想要的。如果沒有,然後張貼完整的代碼與HTML –

+0

最好是如果你創建一個http://jsfiddle.net/。 –

回答

0

與您的代碼的一個問題是,如果一個<li>有類'current',那麼你要添加動畫到所有".caption-text"元素,不只是與項目下的那些類'.current'

你可以通過幾種方式修復你的代碼。通過這種方式處理每個<li>獨立:

$(document).ready(function() { 
    $('ul.itemwrap li').each(function() { 
     var item = $(this); 
     var caption = item.find(".caption-text"); 
     if (item.hasClass('current')) { 
      caption.addClass("animated"); 
     } else { 
      caption.removeClass("animated"); 
     } 
    }); 
}); 

這種方式使用選擇做更多的工作對您:

$(document).ready(function() { 
    // clear .animated from all captions 
    $('ul.itemwrap li .caption-text').removeClass("animated"); 

    // put back the .animated under .current 
    $('ul.itemwrap li.current .caption-text').addClass("animated"); 
}); 
相關問題