Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.07.2015, 11:34
Интересующийся
Отправить личное сообщение для Mikhail1989 Посмотреть профиль Найти все сообщения от Mikhail1989
 
Регистрация: 28.01.2015
Сообщений: 26

рони,
плагин jScrollPane (http://jscrollpane.kelvinluck.com/)
пытаюсь инициализировать его так
$('.scroll-pane').jScrollPane();

но срабатывает он почему то частично, т.е. полоса прокрутки изменяется, но до конца не прокручивается контент.
Ответить с цитированием
  #12 (permalink)  
Старый 27.07.2015, 11:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Mikhail1989
$('.scroll-pane').jScrollPane();
а разве не так ?
$(function()
			{
				$('.scroll-pane').jScrollPane();
			});
или лучше так
$(window).load(function()
			{
				$('.scroll-pane').jScrollPane();
			});
Ответить с цитированием
  #13 (permalink)  
Старый 27.07.2015, 11:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Mikhail1989,
если изменилось содержание одного $('.scroll-pane') ;
после того как загрузили новое содержимое сделать так
var api = $('.scroll-pane').data('jsp');
api.reinitialise();
если елементов много обойти циклом все
пример http://jscrollpane.kelvinluck.com/dynamic_height.html
Ответить с цитированием
  #14 (permalink)  
Старый 27.07.2015, 15:32
Интересующийся
Отправить личное сообщение для Mikhail1989 Посмотреть профиль Найти все сообщения от Mikhail1989
 
Регистрация: 28.01.2015
Сообщений: 26

Сообщение от рони Посмотреть сообщение
Mikhail1989,
если изменилось содержание одного $('.scroll-pane') ;
после того как загрузили новое содержимое сделать так
var api = $('.scroll-pane').data('jsp');
api.reinitialise();
если елементов много обойти циклом все
пример http://jscrollpane.kelvinluck.com/dynamic_height.html
извините за глупость, но это выполнять надо в основном файле или в подгружаемом, уже по всякому перепробовал, результат нет
ps. и вот что интересно если нажать на ссылку повторно, то срабатывает как надо, при
$('.scroll-pane').jScrollPane();

Последний раз редактировалось Mikhail1989, 27.07.2015 в 15:55.
Ответить с цитированием
  #15 (permalink)  
Старый 27.07.2015, 16:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Mikhail1989,
это api.reinitialise(); или это $('.scroll-pane').jScrollPane(); надо ставить в то что у вас подгружает контент
Ответить с цитированием
  #16 (permalink)  
Старый 27.07.2015, 16:49
Интересующийся
Отправить личное сообщение для Mikhail1989 Посмотреть профиль Найти все сообщения от Mikhail1989
 
Регистрация: 28.01.2015
Сообщений: 26

рони,
если так
$(document).on('click', 'a', function(e){
                    e.preventDefault();
                    var link = $(this).attr('href');
                    var api = $('.scroll-pane').data('jsp');
                    $.ajax({
                        type:'post',
                        url: link,
                        success: function(mes){
                          $('#content').prev('.slider').hide();
                            $('#content').html(mes);
                            api.reinitialise();
                        }
                    })
                })

то в консоли
TypeError: api is null
api.reinitialise();

если так
$(document).on('click', 'a', function(e){
                    e.preventDefault();
                    var link = $(this).attr('href');
                    $.ajax({
                        type:'post',
                        url: link,
                        success: function(mes){
                          $('#content').prev('.slider').hide();
                            $('#content').html(mes);
                            $('.scroll-pane').jScrollPane();
                            
                        }
                    })
                })

то срабатывает, но прокрутка не действует до конца, а если нажать на ссылку повторно, то уже все работает как надо
Ответить с цитированием
  #17 (permalink)  
Старый 27.07.2015, 17:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Mikhail1989,
$(window).on('resize', function() {
   $('.scroll-pane').each( function() {
     var api = $(this).data('jsp');
    if(api) {api.reinitialise()}
    else {
      $(this).jScrollPane();
    }

}  )


})

$(document).on('click', 'a', function(e){
                    e.preventDefault();
                    var link = $(this).attr('href');
                    $.ajax({
                        type:'post',
                        url: link,
                        success: function(mes){
                          $('#content').prev('.slider').hide();
                            $('#content').html(mes);
                            $(window).resize()

                        }
                    })
                })
Ответить с цитированием
  #18 (permalink)  
Старый 27.07.2015, 23:08
Интересующийся
Отправить личное сообщение для Mikhail1989 Посмотреть профиль Найти все сообщения от Mikhail1989
 
Регистрация: 28.01.2015
Сообщений: 26

рони,
спасибо, но все никак не работает.
постоянно срабатывает это условие
else {
$(this).jScrollPane();
	    }

и как результат не полная прокрутка подгруженного материала
Ответить с цитированием
  #19 (permalink)  
Старый 28.07.2015, 14:02
Интересующийся
Отправить личное сообщение для Mikhail1989 Посмотреть профиль Найти все сообщения от Mikhail1989
 
Регистрация: 28.01.2015
Сообщений: 26

Сообщение от рони Посмотреть сообщение
Mikhail1989,
$(window).on('resize', function() {
   $('.scroll-pane').each( function() {
     var api = $(this).data('jsp');
    if(api) {api.reinitialise()}
    else {
      $(this).jScrollPane();
    }

}  )


})

$(document).on('click', 'a', function(e){
                    e.preventDefault();
                    var link = $(this).attr('href');
                    $.ajax({
                        type:'post',
                        url: link,
                        success: function(mes){
                          $('#content').prev('.slider').hide();
                            $('#content').html(mes);
                            $(window).resize()

                        }
                    })
                })
поменял resize на scroll работает, но как-то это не совсем красиво выглядит

хотя, нормально вроде, спасибо

Последний раз редактировалось Mikhail1989, 28.07.2015 в 15:34.
Ответить с цитированием
  #20 (permalink)  
Старый 31.07.2015, 12:54
Интересующийся
Отправить личное сообщение для Mikhail1989 Посмотреть профиль Найти все сообщения от Mikhail1989
 
Регистрация: 28.01.2015
Сообщений: 26

рони,
подсобите еще пожалуйста, опять проблема по этому скрипту, на одной из подгружаемых страниц есть свои обработчики для ссылок, но этот обработчик же действует, и на них тоже. Как его можно отключить перед выполнением нужных мне обработчиков. Пробовал .ubind() .off() не получилось, наверно, не туда их добавляю.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jquery Ajax не работает через определенных провайдеров Fairy-Wilbury AJAX и COMET 0 10.07.2014 16:33
При отправке через ajax не открывается файл-адресат temuch-13 AJAX и COMET 6 09.07.2014 17:03
Не выполняется JS в тегах загруженных через Ajax Selen Events/DOM/Window 4 24.05.2014 21:09
Передача HTML кода на сервер через Ajax KomaLex AJAX и COMET 2 06.12.2012 15:28
Как реализовать отключения JS кода через админку ? lamer Серверные языки и технологии 4 08.02.2012 17:23