2013-03-18 2 views
1

Так я пытаюсь сделать раздел затухать до следующей ссылки, как такПерейдите HREF, когда анимация заканчивается

<a class="fadelink" href="path/to/file">Hello</a> 

<script type="text/javascript"> 
     $("a.fadelink").click(function(e){ 
      e.preventDefault();   
      $("#content").fadeTo(400,0,function(){ 
       window.location.href = $(this).attr("href"); 

      }); 
     }); 
    </script> 

Проблема заключается в том, JQuery продолжает возвращаться мне с «неопределенным» и 404 в перенаправлении.

+2

'this' для' # content' не 'a.fadelink' в вашем коде. – cdmckay

+1

Вы пытаетесь получить доступ к атрибуту 'href'' a.fadelink' или '# content'? –

+0

закрытие проблемы –

ответ

9

Ваш $(this) в $(this).attr("href") указывает на $("#content"), который неправильно. Переместить его в нужном объеме:

$("a.fadelink").on("click", function(evt) { 

    evt.preventDefault(); 

    var goTo = $(this).attr("href");   // get href value of `this` anchor 

    $("#content").fadeTo(400, 0, function() { 
     window.location = goTo;    // Now you can use it 
    }); 

}); 
+1

Мог бы поклясться, что я попробовал это до публикации, возможно, мне нужно больше кофеина. Огромное спасибо. –

+0

@ RichardDenton сделай для меня тоже! –

+0

Пожалуйста, прекратите тратить циклы процессора: 'this.href' меньше набирает и намного быстрее (не то, что кто-нибудь заметит, но вы будете чувствовать себя счастливее, если бы потревожили меньше электронов). – RobG

2

Вы имеете в виду ту this. На якоре присутствует атрибут href, а не элемент #content.

$("a.fadelink").click(function(e){ 
    e.preventDefault(); 
    var that = this; 
    $("#content").fadeTo(400,0,function(){ 
     window.location.href = $(that).attr("href"); 

    }); 
}); 
Смежные вопросы