2013-07-12 70 views
0

對不起,我之前發佈過一個問題,可能沒有太大意義。所以我刪除了它,然後重新發布它。給定名稱的動畫合成href?

我有一個鏈接,當點擊導航用戶到頁面的特定部分(這部分工作很好)。但是,我希望頁面的「特定」部分(即href鏈接)具有動畫效果,以便用戶的眼睛注意它。

所以我有這樣的事情:

<a href="#" name="myapp" class="app">click me</a>

基本上我有jQuery的點擊事件,這是在與類名app任何HREF稱爲如下:

$(".app").click(function (e) { 
       var name = this.name; 
       scrollToAnchor(name); 
       e.preventDefault(); 
      }); 

這很好用,用戶點擊鏈接,它調用這個函數調用scrollToAnchor(name)函數。現在scrollToAnchor函數後,我想動畫指向它的對象(即名稱)。所以想象一下我在上面發佈的那個href的網站頂部。而在附近的某處網站的底部我有另一個HREF:

<a href="someURL" name="myapp">Some Site</a>

所以,當我點擊第一個它滾動我這個錨標記A HREF。這部分工作,但我想動畫這第二個錨標籤背景。如果我試試這個:

$(".app").click(function (e) { 
       var name = this.name; 
       scrollToAnchor(name); 
       $(this).animate({ 
        backgroundColor: "#FFD700" 
       }, 
        2500, 
        function() { 
         $(this).animate({ backgroundColor: "#fff" }, 2500); 
        }); 
       e.preventDefault(); 
      }); 

這不會工作作爲動畫最初的錨標記一個我張貼在這個問題的頂部。我想爲其滾動的錨點標籤(包含name變量的錨點標籤)設置動畫。我可以以某種方式做到這一點,而不用硬編碼的ID?

回答

1

您設置動畫時,使用$(this)選擇。在這種情況下$(this)將是激活點擊事件的控件。

您應該將其更改爲類似於以下內容的內容,其中您特別加載了所需的元素。

$(".app").click(function (e) { 
    var name = this.name; 
    scrollToAnchor(name); 
    var target = $('a[href="#' + this.name + '"]'); 
    target.animate({ 
     backgroundColor: "#FFD700" 
     }, 
     2500, 
     function() { 
     target.animate({ backgroundColor: "#fff" }, 2500); 
     } 
    ); 

    e.preventDefault(); 
}); 
+0

獲取錯誤...未捕獲錯誤:語法錯誤,無法識別的表達式:[=「tkpc」]。看起來這是你設置這個部分的方式的一個問題:'var target = $('a [href =「#'+ this.name +'」'''';' – oJM86o

+0

'$('a [href =「 #'+ this.name +'「]');'需要根據您的要求進行自定義。它應該是一個jQuery選擇器,用於唯一標識要導航的元素。我用'href'完成了這個,但是你可以使用'name'或'id'或其他任何東西。 – Kami

+0

這裏是我有'$(「。app」)。點擊(function(e){var name = this.name; scrollToAnchor(name); e.preventDefault(); var target = $('a [name =「#'+ this.name +'」] '); target.animate({backgroundColor:「#C4E9FE」},800); },function(){ target.animate({backgroundColor:「#ffffff」},800); };'它說目標沒有被定義... – oJM86o

0

既然你知道得到錨標記的id(假設這一點,因爲在默認情況下,當你滾動到#link哈希,這意味着你滾動到使用id =「Link」的元素)。你可以使用它的動畫:

var name = this.name; 
scrollToAnchor(name); 
$('#'+name).animate(...); 
e.preventDefault(); 

如果需要通過名稱目標,你可以這樣做:

$('[name="'+name+'"']).animate(...); 
+0

但這是問題所在,結果錨標記沒有標識,只是一個名稱。 – oJM86o

+0

我想你需要指定標籤,因爲鏈接和錨點名稱相同,所以你不想同時設置動畫。 –