2017-05-19 18 views
0

我試圖在單擊後單元素的所有父母動畫。動畫(this)next所有的父母與jQuery?

我已經試過以下幾個迭代:

$(this).parent().nextAll().animate({ 
    marginTop: '-=50px' 
}, 500); 

但我不認爲我得到的語法正確的...

父元素有一類「.useritem」我有一種感覺,我不得不使用它,但我不知道在哪裏,因爲我認爲指定該項目的父>>所有後>>向上移動50像素,將工作。

任何幫助,指導或建議都會很長,謝謝。

編輯1:HTML

我的HTML是基於服務器響應動態創建的。它看起來是這樣但是:

<div id='useritem' class='useritem'> 
    <div id='msgnotification' class='msgnotification'>0</div> 
    <img id='userimg' class='userimg' src='data/here'> 
    <div id='usertxt' class='usertxt'> 
     <div id='name' class='name'>User</div> 
     <div id='username' class='username'></div> 
    </div> 
    <div id='useradd' class='useradd'><i class='fa fa-user-plus'></i></div> 
</div> 

有倍數的這些堆疊,當用戶點擊「useradd的」它的寬度是動畫爲0,marginTop代碼應該開槍下,它的每一個「useritem」移動它們向上。

+0

您是否嘗試過'prevAll()'? –

+2

顯示您的HTML並解釋您嘗試設置動畫的元素。 – Barmar

+1

你是什麼意思「所有的父母」?你的意思是下一個元素的父元素,然後是該父元素的父元素,以及該父元素的父元素等?我不認爲一個元素本身可以有多個父母。 –

回答

0

感謝您的意見,並感謝@Barmar指出我的代碼/應該/已經工作了,我又重新審視了它,並意識到我出錯的地方。我已經在超時時間內封裝了marginTop代碼,以等待最初單擊的父元素的設置動畫寬度爲0.但是,當然,當您嘗試再次調用「this」時,該元素不在那裏,沒有初始選擇器。

我使用.delay()修正了這個問題。現在我的初始代碼正在工作,沒有超時!

再次感謝您的意見和時間。這是更新後的代碼:

$(this).parent().animate({ 
    'width': 0, 
    'padding-left': 0, 
    'padding-right': 0 
}, 300, function() { 
    $(this).next().animate({ 
     marginTop: '-=61px' 
    }, 300); 
});