2012-01-23 4 views
2

Я пытаюсь использовать немного плагин для меню анимации я нашел в http://www.gmarwaha.com/blog/2007/08/23/lavalamp-for-jquery-lovers/JQuery Совместимость проблема

Однако, я хочу, чтобы использовать его с последней версией JQuery. Однако анимация не работает с последней версией. Может кто-нибудь, пожалуйста, скажите мне, почему следующее будет работать с jQuery 1.5 и ниже, но теперь над версиями выше?

(function ($) { 
    $.fn.lavaLamp = function (o) { 
     o = $.extend({ 
      fx: "linear", 
      speed: 500, 
      click: function() {} 
     }, o || {}); 
     return this.each(function() { 
      var b = $(this), 
       noop = function() {}, 
       $back = $('<li class="back"></li>').appendTo(b), 
       $li = $("li", this), 
       curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0]; 
      $li.not(".back").mouseover(function() { 
       move(this) 
      }, noop); 
      $(this).hover(noop, function() { 
       move(curr) 
      }); 
      setCurr(curr); 

      function setCurr(a) { 
       $back.css({ 
        "left": a.offsetLeft + "px", 
        "width": a.offsetWidth + "px" 
       }); 
       curr = a 
      }; 

      function move(a) { 
       $back.each(function() { 
        $.dequeue(this, "fx") 
       }).animate({ 
        width: a.offsetWidth, 
        left: a.offsetLeft 
       }, o.speed, o.fx) 
      } 
     }) 
    } 
})(jQuery); 

ответ

0

Вы всегда можете загрузить обе версии jquery. Используя noConflict, вы можете загрузить 1.5 для плагина, но использовать 1.7 для своих собственных целей.

+2

Это не очень хорошая идея. – SLaks

+0

Может ли что-то в этом коде изменить, чтобы оно работало с 1.7 вместо этого? Спасибо –

1

Анимация работает для меня в IE8 и FF, используя демо-версию, включенную в this zip file с использованием jQuery 1.7.1. Единственным, что я должен был изменить в файле пример, чтобы получить ссылки рабочих были закомментировать возвращение ложного в случае щелчка следующим образом:

$(function() { 
    $("#1, #2, #3").lavaLamp({ 
     fx: "backout", 
     speed: 700, 
     click: function(event, menuItem) { 
      //return false; 
     } 
    }); 
}); 

, как это предотвращения фактических ссылок от работы. Это ваша проблема? Если нет, то, возможно, в вашем коде есть какая-то другая ошибка, поскольку она работает.

+0

Все, что мне нужно было сделать, это навести указатель мыши на зависание. Он решил проблему, но теперь, когда я наводил курсор на раскрывающееся меню, он не работает. –

+0

Можете ли вы дать нам образец вашего кода и css? Как и в коде, который вы используете для применения плагина. Код, который вы указали в исходном сообщении, был для фактического плагина. Я думаю, что может быть что-то не так с вашим css или вызовом плагина, так как пример, упомянутый в моем ответе, работает отлично. – Zappa

0

Проблема с линии:

$li.not(".back").mouseover(function(){move(this)}, noop); 

вынимают второй аргумент в обработчике оставляя:

$li.not(".back").mouseover(function(){move(this)}); 

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

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