2011-12-22 4 views
2

私はこの.after()にチェーンされた.fadeIn()アニメーションを探していましたが、これはそれを行う方法ではありません。助言がありますか?jQuery fadeIn()after()

$(clicked_item).parent().parent().parent().after(str).fadeIn("slow"); 

答えて

14

.insertAfter()を使用してください。

$(str) 
    .hide() 
    .insertAfter($(clicked_item).parent().parent().parent()) 
    .fadeIn("slow"); 
+0

フェーディン効果がまだ働きません – ThinkingInBits

+0

私の答えが更新されました。新しく作成された要素に '.hide()'を追加しました。再試行する。 –

+0

最新の編集ができます。ありがとう:D – ThinkingInBits

3

@ EmreErkanの回答に加えて、コードを最小化してみてください。あなたはparent() 3回を使用するのではなく、後にテキストを追加したいidまたはDIVのclassparents()を使用して選択します。

$(str) 
    .hide() 
    .insertAfter($(clicked_item).parents(selector)) 
    .fadeIn("slow"); 

EDIT:としては、代わりにclosest()を使用することをお勧めします、コメントで指摘単一の要素をターゲットにしている場合はparents()となります。通常、セレクタを使用してparents()を使用しています。

+4

'.closest()'は複数の一致する親ではなく1つのオブジェクトの後にあるので、 '.parents()'よりも優れていますが、このコンセプトを複数の 'parent()'誰かがHTMLレイアウトにもう1つのdivを追加/削除すると、はるかに壊れにくいので呼び出します。 – jfriend00

2

$ .fn.after()は、実行された要素(この場合は$(clicked_item).parent()。parent()。parent())を返します。それがフェードインしたい要素なら、私は何の問題も見ません。あなたは、フェードイン(にしたい場合は)「STR」要素の代わりに、私はこれを行うことをお勧めしたい:

$(str).insertAfter($(clicked_item).parent().parent().parent()).fadeIn('slow'); 

の数を変更する必要はありません要素の特定の親を得るための、より安定した方法

$(clicked_item).parents('p').eq(0) 

変更あなたが到達したい要素に「P」:.parentは()あなたが変更した場合、HTMLはタグ名と一緒に)(.parentsを使用することです呼び出します。

編集:woops、遅すぎます。