2013-04-15 2 views
0

Вот сайт, что я говорю: http://imok.ro/demo/drtudor/index.php/our-practice/osteopathic-manual-medicineJQuery и Ajax на Joomla

Он работает на Joomla 2.5, но нагрузки с Ajax (а плагин). Этот плагин имеет опцию «прокрутка вверх», но он конфликтует с сценарием jQuery, который я добавил (для индивидуальной прокрутки).

Помимо библиотеки jQuery загружается «jquery.backgroundpos.js» для фоновой анимации и «jquery.mcustomscrollbar.concat.min.js» для настраиваемой полосы прокрутки.

Поэтому я решил сделать собственный код, который состоит из двух частей. Моя проблема в том, что они не работают вместе ... Отдельно все в порядке.

(function(jQuery){ 
jQuery.noConflict(); 
    jQuery(window).load(function(){ 
     jQuery("#rt-mainbody").mCustomScrollbar({ 
      autoHideScrollbar:true, 
      theme:"light-thin" 
     }); 
    }); 
})(jQuery);  

jQuery(document).ready(function() { 
    jQuery('a').click(function(){ 
     jQuery('#rt-mainbody').animate({scrollTop:0}, 'slow'); 
      return false; 
     }); 
}); 

Что мне здесь не хватает?

Edit:

Я не специалист в области веб-программирования, и не могли отладить mscustomscrollbar.js. Я думаю, из-за вызова Ajax я не мог отлаживать Firebug. (Есть ли решение, о котором я не знаю?) Код в файле длиной 1000 строк и не знал, что искать ...

Я продолжал искать решение, и я обнаружил, что этот плагин имеет много других функций, например функцию ScrollTo, или .mCustomScrollbar("update"). Это не решило проблему, поэтому я подумал, что эту функцию («обновление») следует вызывать после перезагрузки страницы. В плагинах Ajax index.php есть строка, которая прокручивает страницу после каждого события. Я добавил функцию «update» здесь, но для некоторого reaseon он не работает ... Это написано в Ajax, поэтому оно несовместимо с jQuery?

if($this->params->get('scrlUp', 1) == 1){ 
     //for nice scroll ;) 
     JHTML::_('behavior.framework', true); 
     $cnfg_data .= "\nFLAX.Html.onall('response', function(){new Fx.Scroll(
      document.getElementById('rt-mainbody')).toTop().mCustomScrollbar('update');  
     });"; 
    } 

Спасибо!

ответ

0

Первая функция вызывается сразу же, когда JQuery еще не могут быть доступны, и я не уверен, что это имеет смысл подключить к готовности, так и нагрузки, может быть проще отладить его так:

jQuery(function($) { 
    $("#rt-mainbody").mCustomScrollbar({ 
     autoHideScrollbar:true, 
     theme:"light-thin" 
    }); 
    $('a').click(function(){ 
     $('#rt-mainbody').animate({scrollTop:0}, 'slow'); 
      return false; 
     }); 
}); 

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

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