2015-05-27 3 views
0

Я пытаюсь выполнить функцию «back to top» на странице через простой jquery. Кнопка «BACK TO TOP» появляется/исчезает, как ожидалось. Когда он появится, если я нажму на него, я ожидаю, что он переместится в начало страницы, вместо этого ничего не произойдет. Я не уверен, что происходит не так.Наверху кнопка не нажимает - jquery

Вот код:

CSS:

#btoTop { 
     padding: 15px 10px; 
     background: #1f242a; 
     color: #fff; 
     position: fixed; 
     bottom: 0; 
     right: 15px; 
     display: none; 
     cursor:pointer; 
     cursor:hand; 
     width:130px; 
     height:40px; 
    } 

HTML:

<div id='btoTop'>BACK TO TOP</div> 

ЯШ:

$(document).ready(function(){ 
     $(window).scroll(function(){ 
      if($(window).scrollTop() > 0){ 
       $("#btoTop").fadeIn("slow"); 
      } 
      else { 
       $("#btoTop").fadeOut("slow"); 
      } 
     }); 
     $("#btoTop").click(function(event){ 
      event.preventDefault(); 
      $("html, body").animate({scrollTop:0 },"slow"); 
     }); 
}); 

Примечание: Если я вызываю функцию щелчка внутри $ (window) .scroll(), я могу нажать кнопку. Но он мерцает и не работает с изменением размера окна.

$(document).ready(function(){ 
     $(window).scroll(function(){ 
      if($(window).scrollTop() > 0){ 
       $("#btoTop").fadeIn("slow"); 
      } 
      else { 
       $("#btoTop").fadeOut("slow"); 
      } 
      $("#btoTop").click(function(event){ 
       event.preventDefault(); 
       $("html, body").animate({scrollTop:0 },"slow"); 
      }); 
     }); 

}); 
+0

Работы [здесь] (http://jsfiddle.net/042x8sxh/) – Zee

+0

должно быть что-то еще, я получил его на работу (https: // jsfiddle.net/rp1gzeut/) – stackoverfloweth

+1

Ваш код работает здесь: https://jsfiddle.net/y8yqs7oz/ –

ответ

0

Я понял, что кнопка еще не была доступна в DOM, когда я пытался ее щелкнуть. Добавление таймера на нем работало довольно хорошо. Надеюсь, что это помогает кто-то там с подобным вопросом ...

$(document).ready(function(){ 
      $(window).scroll(function(){ 
       if($(window).scrollTop() > 0){ 
        $("#btoTop").fadeIn("slow"); 
       } 
       else { 
        $("#btoTop").fadeOut("slow"); 
       } 
      }); 
      $timeout(function() { 
       $("#btoTop").click(function(event){ 
        event.preventDefault(); 
        $("html, body").animate({scrollTop:0 },"slow"); 
       }); 
      }, 500); 
}); 
0

Вы связывание click на кнопке каждый раз, когда вы прокрутку, которое не является необходимым. Вы должны изменить его:

$(document).ready(function() { 

    $(window).scroll(function() { 

    if($(window).scrollTop() > 0) { 

     $("#btoTop").fadeIn("slow"); 

    } else { 

     $("#btoTop").fadeOut("slow"); 
    } 
    }); 

    // Bound a single time 
    $("#btoTop").click(function (event) { 

    event.preventDefault(); 
    console.log("Clicked the button"); 
    $("html, body").animate({scrollTop:0 },"slow"); 

    }); 
}); 

Это может быть не проблема, но должны быть изменены, чтобы избежать странного поведения в вашем коде.

+0

Я знаю об этом. Поскольку единственное связывание кнопки не работает, я попытался получить функцию щелчка внутри прокрутки. Я делаю так, как вы сказали, клик не вызван, и это точно моя проблема. – Mustang

+0

@SAM Вы не видите * «Щелкнуть по кнопке» * в инструментах dev, когда вы нажимаете на нее? Если нет, тогда есть проблема в другом месте на странице – Alex

+0

Да, я не вижу предупреждения. Если я положу точку останова, отладчик даже не дойдет до него. – Mustang

Смежные вопросы