2012-02-22 1 views
1

は私が達成したいものです。ページを離れる前にクリックしたリンクをアニメーション化するにはどうすればよいですか?ここで

  1. をHTMLリンクをクリックすると、私はリンクが新しいウィンドウ/タブで開かれている場合、アニメーションはいけない
  2. ページを離れる前に、それをアニメーション化します開催場所

どのように私はこれを達成しますか?

答えて

2

あなたはjavascript

$(function(){ 
    $(".btn").bind("click",function(){ 
    $(this).animate({'left': '100px'}, 100, function(){ 
    window.location.href = index.html 
    }) 
}) 
}) 

を使用することができますしかし、あなたのボタンがリンクされている場合は、デフォルトのアクションを停止する必要があります。

+0

2番目の部分についてはわかりません –

+0

ボタンはありません。リンクのクリックイベントでアニメーションを再生することは、実際には選択肢ではありません。なぜなら、同じウィンドウ(アニメーションは再生するはずか)または新しいウィンドウ(アニメーションは再生しないでください) 。 –

+0

clickイベントで 'false'を返すか' preventDefault'を呼び出す必要があります。 – jcubic

0

クリックイベントをキャプチャし、デフォルトのアクションを防止し、アニメーションを行い、新しいページを読み込む必要があります。

a jsfiddleとして入手可能)jqueryの使用している場合:アップデート

$('a').click(function (event) { 
    event.preventDefault(); 
    $(this).animate({ 
    //whatever 
    }, function() { 
    location.href = $(this).attr("href"); 
    }); 
}); 

を:コメントで述べたような状況を占めHere's the new jsfiddleは、更新されたコードのためにそこに行きます。このトリックは、CtrlキーまたはCommandキーの押下を検索し、いずれかのキーが押されていれば、新しく定義されたアニメーションクリックハンドラを中止することです。

注:jsfiddleのキー入力を検出するには、ウィンドウにフォーカスが必要です。これは、フレームが機能する前にフォーカスが必要であることを意味します。

+0

応答をありがとうが、これは要件#2を満たすとは思わない。ユーザーがリンクのコンテキストメニューを開いて「新しいウィンドウで開く」を選択すると、アニメーションを再生せずにリンクが新しいウィンドウで開かれます。しかし、ユーザーがCRTL/CMDを押し続けてリンクをクリックすると、提案された方法でアニメーションが再生され、同じウィンドウでリンクが開きます。 –

+0

私はjsfiddleを更新しました。あなたが今述べた状況を処理する必要があります。私はMac上で "Ctrl"をテストすることができませんでしたが、それは動作するはずです(コマンドで動作します)。 –

関連する問題