0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 1286 Просмотров
*

waterfly

  • Захожу иногда
  • 83
  • 0 / 0
Заранее прошу прощения если создаю тему не в том разделе, и прошу модераторов сделать это за меня.
Суть проблемы: в шаблоне материала компонента К2 хочу использовать псевдо-эквалайзер на jQuery _http://jsfiddle.net/yurik417/VVvDV/.
Все делаю по инструкции, скрипт загружается, эквалайзер работает с дефолтными настройками. По умолчанию он включен и при обновлении страницы дорожки эквалайзера бегают. Их работу я могу останавливать и запускать снова, но стоит в коде вызова скрипта изменить запуск при загрузке страницы на запуск вручную, скрипт перестает работать. FireBug при нажатии на кнопку запуска работы эквалайзера показывает следующее:
Код
TypeError: $(...).data(...) is not a function


$(this).data('eqInt')();
и ничего не происходит, т.е. скрипт не работает.
Прошу помощи, т.к. в скриптах не силен, в какую сторону копать - шаблон или скрипт.

На всякий случай прикрепляю код скрипта.
Код
 false/*код плагина*/
(function ($) {
    var methods = {
        init: function (options) {
var p = {
row:7, //кол-во столбцов
col:6, //кол-во колонок
speed:20, //скорость подсветки кубиков
freq:400, //частота сигнала
on:true //включено по умолчанию (true,false)
};
if (options) {
$.extend(p, options);
}
var eqWrap = $(this).addClass('eqWrap');
for(c=0;c<p.col;c++){
var eqColEl = $('<div>').addClass('eqCol').appendTo(eqWrap);
for(r=0;r<p.row;r++){
$('<div>').addClass('eqItem').appendTo(eqColEl);
}
}
var
eqCol = $('.eqCol',eqWrap),
eqItem = $('.eqItem',eqWrap),
randomNumber = function (m,n){
m = parseInt(m);
n = parseInt(n);
return Math.floor( Math.random() * (n - m + 1) ) + m;
},
eqUp = function(colEl,val){
var
speed = p.speed,
v = p.row - val,
i=p.row,
j=0,
flag2=true,
eachItemUp = function(){
$('.eqItem',colEl).eq(i-1).nextAll().stop().css({opacity:'1'});
if($('.eqItem',colEl).eq(i-1).css('opacity') == 1){
flag2 = false
}else{
flag2 = true
}
$('.eqItem',colEl).eq(i-1).stop(true).animate({opacity:'1'},p.speed,function(){
if($('.eqItem',colEl).index(this) == v){
if(flag2){
eqDown(colEl,val);
}
}else{
i--;
j++;
if(i>v){
eachItemUp()
}
}
})

}
eachItemUp()
},
eqDown = function(colEl,val){
var
v = p.row - val,
i = (p.row-val),
j = 0,
speed = p.speed*2,
eachItemDown = function(){
if(i == (p.row-val)){
$('.eqItem',colEl).eq(i).animate({opacity:'0'},speed*10)
setTimeout(function(){
i++;
j++;
if(i<p.row){
eachItemDown();
}
},speed)
}else{
$('.eqItem',colEl).eq(i).animate({opacity:'0'},speed,function(){
i++;
j++;
if(i<p.row){
eachItemDown();
}
})
}
}
eachItemDown();
},
eqInterval = function(){
eqCol.each(function(){
eqUp($(this),randomNumber(0,p.row))
})
}
eqInterval()
if(p.on){
var eqIntervalId = setInterval(eqInterval,p.freq)
$(this).data({
'eqIntId':eqIntervalId,
'eqInt':eqInterval,
'freq':p.freq,
'on':p.on
})
}
},start: function () {
if(!$(this).data('on')){
$(this).data('eqInt')();
var eqIntervalId = setInterval($(this).data('eqInt'),$(this).data('freq'));
$(this).data({
'eqIntId':eqIntervalId,
'on':true
})
}
},
        stop: function () {
if($(this).data('on')){
clearInterval($(this).data('eqIntId'));
$('.eqItem',$(this)).animate({opacity:0})
$(this).data({
'on':false
})
}
}
};
    $.fn.liEqualizer = function (method) {
        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Метод ' + method + ' в jQuery.liEqualizer не существует');
        }
    };
})(jQuery);
/*инициализация плагина*/
$(function(){
$('.anyClass').liEqualizer({
row:7, //кол-во столбцов
col:6, //кол-во колонок
speed:20, //скорость подсветки кубиков
freq:400, //частота сигнала
on:false //включено по умолчанию (true,false)
});
$('.start').click(function(){
$('.anyClass').liEqualizer('start');
return false;
})
$('.stop').click(function(){
$('.anyClass').liEqualizer('stop');
return false;
})
});

Вызов в HTML.
Код
<div class="anyClass"></div>
<div style="clear:both; padding:15px 0">
    <button class="start">start</button>
        <button class="stop">stop</button>
    </div>
*

lexx006

  • Захожу иногда
  • 270
  • 8 / 3
Re: Эквалайзер на jQuery в шаблоне K2
« Ответ #1 : 07.10.2013, 11:01:13 »
Похоже не конфликт JS библиотек, вероятнее всего Mootools. Когда нажимаешь кнопку, то страбатывает onclick. этот $(...).data(...) определен еще где-то.

Можно добавить в скрипт var jq = jQuery.noConflict(); и заменить все вхождения $ на jq.

100% вариант - я обычно так делаю: меняю все $ на jQuery

почитай:
http://api.jquery.com/jQuery.noConflict/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Свой description в шаблоне категории или статьи

Автор lgmax

Ответов: 0
Просмотров: 229
Последний ответ 20.11.2019, 16:42:40
от lgmax
Скрыть 2 последних доп. поля в шаблоне K2 для Joomla 3.х

Автор lgmax

Ответов: 8
Просмотров: 720
Последний ответ 19.05.2017, 18:25:24
от Septdir
передать и вывести в шаблоне дополнительно 1 строчку текста с com_content, com_k2, и собственного

Автор kontrast

Ответов: 5
Просмотров: 468
Последний ответ 20.07.2016, 21:08:58
от Shustry
(решено) Вывести изображение в шаблоне статьи K2 c помощью PHP

Автор Gelik

Ответов: 1
Просмотров: 674
Последний ответ 30.01.2015, 14:49:52
от Gelik
Создание копии item.php (item_new.php) в одном и том же шаблоне K2

Автор mira3a

Ответов: 0
Просмотров: 839
Последний ответ 18.06.2014, 15:44:18
от mira3a