Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работают плагины. undefined is not a function (https://javascript.ru/forum/jquery/51327-ne-rabotayut-plaginy-undefined-not-function.html)

lieeer 02.11.2014 20:04

Не работают плагины. undefined is not a function
 
Добрый день. Имеется Joomla 3 с установленным T3 framework. jQuery v1.11.1.
Не работают 2 готовых плагина на jQuery:
http://plugins.compzets.com/animatescroll/
и
http://nicescroll.areaaperta.com/

Другие плагины не ставил, но думаю будет тоже самое.
nicescroll починил заменой такого кода:

<script type='text/javascript'>
$(document).ready(
    function() { 
    $("html").niceScroll({
        cursorcolor: "#9DDAFF",
        cursorwidth: 5,
        cursorborder: "1px solid #000000",
        mousescrollstep: 50
    });
});
</script>


на такой:

<script type='text/javascript'>
(function($){
  $(document).ready(
      function() { 
      $("html").niceScroll({
        cursorcolor: "#9DDAFF",
        cursorwidth: 5,
        cursorborder: "1px solid #000000",
        mousescrollstep: 50
      });
  });
})(jQuery);
</script>


Помогло, работает прекрасно.
А вот что делать с animatescroll не знаю. Код вызова выглядит так:
<button class="btn demo-btn" onclick="$('body').animatescroll();">Click for a Demo</button>


В инспекторе следующая ошибка:
Uncaught TypeError: undefined is not a function onclick


Как быть?

рони 02.11.2014 20:25

lieeer,
строка 3 -- добавить клик на нужную кнопку -- атрибут onclick из кнопки выкинуть

lieeer 02.11.2014 21:00

не совсем понятно, что вы имели ввиду. Повторюсь, что не знаю JS вообще.

Вдруг я не ясно выразился. С nicescroll проблем нет вообще. Проблема исключительно с animatescroll.

Не могли ли вы на пример показать, что нужно убрать и откуда именно?

рони 02.11.2014 21:23

lieeer,
(function($){
  $(document).ready(
      function() {
      $(".demo-btn").click(function() {$("body").animatescroll()})
      $("html").niceScroll({
        cursorcolor: "#9DDAFF",
        cursorwidth: 5,
        cursorborder: "1px solid #000000",
        mousescrollstep: 50
      });
  });
})(jQuery);

Цитата:

Сообщение от lieeer
<button class="btn demo-btn" onclick="$('body').animatescroll();">Click for a Demo</button>


lieeer 02.11.2014 21:30

Спасибо, так работает. Но почему не работает onclick? У меня на простом статичном сайте такой код работает, а на Joomla ошибка. Можно ли что-то сделать, чтобы onclick работал?

Такой код, к примеру, работает как надо:

onclick="alert('Тест')"


Заранее благодарю

рони 02.11.2014 21:48

Joomla как заставить работать вместе jQuery и Mootools
 
lieeer,
потому что в Joomla есть Mootools который переключает $ на себя -- а для jQuery - если правильно подключено - jQuery.noConflict(); -- есть запасное имя - jQuery - можно поставить любое
сделав так
var abrakadabra = jQuery.noConflict();

тогда можно так
onclick="abrakadabra('body').animatescroll();"

естественно вы такой фигнёй ещё не страдаите тогда у вас будет
onclick="jQuery('body').animatescroll();"


ТС это не для вас, если создатель плагина забыл обернуть плагин в конструкцию
(function($){
// тут код плагина 
})(jQuery);

сделайте это самостоятельно.

lieeer 02.11.2014 22:01

На сайте подключено

jquery.min.js
jquery-noconflict.js
jquery-migrate.min.js

В J!3 нет поддержки mootools.

ТС это не для вас, если создатель плагина забыл обернуть плагин в конструкцию
(function($){
// тут код плагина
})(jQuery);

сделайте это самостоятельно.


https://github.com/ramswaroop/animat...imatescroll.js

Обернуто, однако... Все равно спасибо

рони 02.11.2014 22:35

Цитата:

Сообщение от lieeer
В J!3 нет поддержки mootools.

ой
Цитата:

Joomla 3 ... •JQuery и Mootools Ready
ну если у вас точно нет mootools
тогда уберите jquery-noconflict.js и все плагины заработают без всякой правки и оборачивания


Часовой пояс GMT +3, время: 16:27.