2011-07-27 14 views
0

)小さな問題に遭遇しました。アンカータグがいっぱいのページがあります。そのうちの1つが選択されると、アニメーションが始まります。アンカータグを(this)と定義しました。アンカーのシリーズを選択するとそれぞれアニメーションが実行されますが、今はどのようにタグを変更することができますか?アンカータグを作成するにはどうすればよいですか(

私のコードは、これまでのところです:

$('a').bind('click', function(e){ 
      $ajax = $('<div id="ajax"></div>'); 
      $ajax.prependTo('#container'); 
      $('html, body').animate({ scrollTop: 0 }, 'fast', function(){ 
       $ajax.animate({ height: 300 }, 'slow', function(){ 
        $preloader = $('<div id="preloader"></div>').hide(); 
        $preloader.prependTo('#ajax').fadeIn('normal'); 
       }); 
      }); 
      e.preventDefault(); 
     }); 
+1

私はあなたが何を求めているのか分かりません。 'click'関数の中で、アンカーは自動的に' this'にセットされます。 –

+1

あなたが達成したいことは本当にわかりませんが、いくつかの問題があります。(a) '$ ajax'はグローバルです(目的は?)。 (b)それをローカルにすると、いくつかの要素が同じIDを持つことになります。 (c) '$ preloader'で参照される要素は決してDOMツリーに追加されません。 –

+0

クリックしたときにそのコードを実行させるアンカーが1つしかないようにする場合は、「Brombomb answer」を参照してください。 –

答えて

1

でjQueryのからid-selector、よりselectorsにいくつかの詳細情報です。この方法で作成した変数はすべてグローバルスコープに上書きされるため、これは悪いです。

$('a').bind('click', function(e){ 
    var $ajax = $('<div></div>').prependTo('#container'); 

    $('html, body').animate({ scrollTop: 0 }, 'fast', function(){ 
     $ajax.animate({ height: 300 }, 'slow', function(){ 
      $('<div></div>').hide().prependTo($ajax).fadeIn('normal'); 
      // you can refer to $ajax here! --^^^^^ 
     }); 
    }); 
    e.preventDefault(); 
}); 
2

あなたは、あなたがこの

$('#myTag').bind(... 

のようにアクセスすることができ、この

<a id="myTag" href=""></a> 

のようなあなたのアンカータグにIDを追加しますページごとに1回のみIDを使用してください(つまり、すべてのIDは一意であり、1ページあたり1つのIDしかないというわけではありません)。

ここであなたがvarキーワードを使用していない一般的な

関連する問題