2012-01-25 1 views
1

私が望むのは非常に簡単ですが、私は構文に苦労しています。私の要素がクリックされたときに、私のアニメーションがトリガされ、.css()の直後に欲しいと思います。ご協力いただきありがとうございます。乾杯。マーククリックトリガーで2つの「イベント」を呼び出す

$('.content').click(function() { 
    $('#contentWrapper').animate({ 
     "left": "-=475px"}, "fast"), 
    $(this).prev().css("display": "none"); 
}); 
+0

ここにHTMLを貼り付けることができますか? – sathishkumar

+0

あなたは '.css(" display "、" none ")'は '.hide()'と同じであることを知っていますか? –

答えて

4

ほぼ。あなたはanimateに関数参照をcomplete引数を渡す必要があります:

$('.content').click(function() { 
    $('#contentWrapper').animate({ 
     "left": "-=475px"}, "fast", function() { 
      $(this).prev().css("display", "none"); 
     } 
    ); 
}); 

(また、cssのためのあなたの構文は、少しオフだったあなたは,代わりの:を望んでいた)

+0

javascriptは関数スコープを持っているので、別の関数の中で呼び出しをラップすると 'this'はクリックされたオブジェクトではなく別のオブジェクトを指します(少なくとも私が思うところです) –

+0

Andrewを助けてくれてありがとう。よく働く! – Marc

+1

@NicolaPeluchetti:正しいことですが、コールバックの 'this'はアニメーションオブジェクトを参照します。 –

1

あなたがように、第2の部分を供給しますこれは、最初の関数が完了した後に実行されることを意味します。 と同じ elemntを最初のアニメーションとして使用していた場合、連鎖を使用できます(この場合、htmlを指定しなかったため使用できないのかどうかはわかりません)。

$('.content').click(function() { 
    $('#contentWrapper').animate(
     {"left": "-=475px"}, 
     "fast", 
     function(){ 
      $(this).prev().css("display": "none"); 
     } 
    ); 
}); 
2

あなたはコールバックとして

$('.content').click(function() { 
    $('#contentWrapper').animate({ 
     "left": "-=475px"}, "fast", $(this).prev().css("display": "none")); 
    }); 
}); 

EDIT第2の機能を提供しなければならない - 私がクリックされた要素にこのようにthisポイントだと思いますが。あなたがしなければならない場合

$('.content').click(function() { 
    var that = this; 
    $('#contentWrapper').animate({ 
     "left": "-=475px"}, "fast", $(that).prev().css("display": "none")); 
    }); 
}); 
関連する問題