2017-05-19 14 views
0

私は、クリックした後に要素の親のすべてをアニメーション化しようとしています。jqueryを持つ(this)nextAllの親をアニメーション化しますか?

、私は次のいくつかの繰り返し試してみました:

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

をしかし、私は、私は、構文の権利を取得していないと思う...

親要素は、「.useritem」のクラスを持っています私はそれを使用しなければならないと感じていますが、50 px上に移動した後で、このアイテムの親>>すべてが動作すると指定したとは思っていませんでした。

助け、指導、助言などは遠慮なく行っていただきますようお願い申し上げます。

編集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に感謝します。私はもう一度やり直して、どこが間違っていたかを認識しました。最初のクリックされた親要素のアニメーション幅が0になるのを待つためにタイムアウトでmarginTopコードを折り返していましたが、もちろん 'this'をもう一度呼び出そうとすると、その要素はそこにないので、最初のセレクタがあります。

代わりに.delay()を使用してこれを修正しました。そして今、私の初期のコードはタイムアウトなしで動いています!

入力していただきありがとうございます。これは更新されたコードです:

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