2011-07-27 37 views
0

我遇到了一個小問題,我得到了一個充滿錨標記的頁面,當他們中的一個被選中動畫開始時,我現​​在唯一的問題是我沒有將錨標籤定義爲(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

如果您的意思是您只想讓一個錨點在點擊時執行該代碼,請參閱Brombomb答案,否則請更清楚。 –

回答

1

id-selector從jQuery和更selectors一些更多的信息,您不使用var關鍵字。這是不好的,因爲你用這種方式創建的所有變量都在全局範圍內覆蓋彼此

$('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

要一個ID添加到您的錨標記這樣

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

然後你就可以像這樣

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

訪問每個頁面只能使用一次id(意味着每個id都是唯一的,而不是每頁只能有一個id)。

這裏的一般

相關問題