2016-04-25 6 views
1

Я искал и искал причину этой проблемы. Но каждый раз, когда я ищу, я получаю «как добавить гладкую прокрутку». Это не проблема. У меня есть установка wordpress, и гладкая прокрутка работает отлично в каждом экземпляре, за исключением результата, добавленного из JS-файла.jQuery плавные разрывы scoll с вызовом AJAX

$(document).ready(function(){ 
function descriptions(){ 
    var apiCall = '[APIRUL]'; 

    $.ajax({ 
     url: apiCall, 
     type: 'get', 
     dataType : 'json', 
     success: function(data){ 
      $.each(data, function(i, p) { 
       var name = p.name; 
       var namelc = p.namelc; //lowercase 
       var description = p.description; 
       var output = '<div id="' + namelc + '"><h3">' + name + '</h3><p>' + description + '<br /><a href="#table">back to top</a></p></div>'; 

       $('#description').append(output); 
      }); 
     }, 
     error: function(xhr, status, error) { 
      console.log(error); 
     } 
    }); 
}descriptions(); 
}); 

Все возвращается в порядке. Нет проблем с самим jQuery или AJAX. Но по какой-то причине таблица «a href =» # «« перескакивает »обратно в таблицу (над описаниями) и добавляет хеш-адрес (например, http://example.com/somepage/#anchor) вместо того, чтобы облегчать его (как и любая другая привязка на та же самая страница. Т.е. нет ничего плохого в гладком свитке. Что-то еще мешает).

Уверен, что есть объяснение и решение для такого поведения. Но я просто не могу найти его, потому что, как я упоминал ранее, каждый раз, когда я ищу «гладкий свиток не работает», я получаю тонны «как добавить гладкие прокрутки».

Любая помощь, полностью или подтолкнуть в правильном направлении, очень ценится!/Застрял!

ответ

0

Таким образом, благодаря ответу Питера Марка (спасибо за это действительно я застрял на этом в течение более дня. И это было бы дольше без вашей помощи, это точно!) Я понял, что происходит, и это помогло решить проблему. Пока, не выкапывая через слои файлов, чтобы увидеть, откуда приходит начальный гладкий свиток (что вызывает слушатель), это рабочее решение. Приведение назад, что приятна гладкая прокрутка всех JQuery добавляются элементы: D

$('a').click(function(){ 
    $('html, body').animate({ 
     scrollTop: $(this.hash).offset().top 
    },350,'easeInOutExpo'); 
    return false; 
}); 

Как Петр объяснил, это должно идти в ПОСЛЕ добавляющих (в противном случае мы бы просто таргетировании существующих якорей, а не на новые, мы создание/ввод с добавлением).

+0

Рад, что это помогло! Не забудьте принять свой собственный ответ. –

1

Если вы используете свиток JQuery Smooth от h ere, похоже, что он обрабатывается как слушатель. Если вы добавите AJAX, слушатель не будет прослушивать эту ссылку. Перезапустите BIND - что-то вроде этого:!.

$('#description a').smoothScroll(); 

после этой строки в коде:

$('#description').append(output); 
+0

Хм. Интересно. Хотя это само по себе не решило его (дает ошибку в консоли «smoothScroll() не является функцией»), я вижу, где вы собираетесь с этим. Я не знаю, как добавить гладкий свиток (будь то Wordpress или тема, которую я использую). Думаю, мне придется немного углубиться в эту тему). Надеюсь, вы здесь. – axelra82

+0

Я, и, конечно же, предполагается, что вы используете эту библиотеку ... Это один из тех случаев, когда слои абстракции, которые поставляются с несколькими библиотеками, могут замедлить вас. –

+0

Спасибо за помощь @peter Эта проблема теперь решена (см. Мой ответ ниже). – axelra82