ďťż
Podstrony
|
telcocafeWitam,Mam dwa skrypty Jquery które animują te same elementy... Pierwszy to http://www.newmediac...folio-like-ours Sortuje elementy w portfolio (jednocześnie animując ich szerokość) Drugi to prosty hover nad tymi elementami - zmienia przezroczystość... Problem w tym, ze gdy jest uruchomiona pierwsza animacja (sortowanie) a ja najade na którys z animowanych elementów (drugi skrypt)... pierwsza animacja jest przerywana przez drugą... Jak dać "dokończyć" się im obu....? P.S. w obu przypadkach animowany jest "ul.column li" Pierwszy skrypt: /* * Copyright (C) 2009 Joel Sutherland. * Liscenced under the MIT liscense */ (function($) { $.fn.filterable = function(settings) { settings = $.extend({ useHash: true, animationSpeed: 3000, show: { width: 'show', opacity: 'show' }, hide: { width: 'hide', opacity: 'hide' }, useTags: true, tagSelector: '#portfolio-filter a', selectedTagClass: 'current', allTag: 'all' }, settings); return $(this).each(function(){ /* FILTER: select a tag and filter */ $(this).bind("filter", function( e, tagToShow ){ if(settings.useTags){ $(settings.tagSelector).removeClass(settings.selectedTagClass); $(settings.tagSelector + '[href=' + tagToShow + ']').addClass(settings.selectedTagClass); } $(this).trigger("filterportfolio", [ tagToShow.substr(1) ]); }); /* FILTERPORTFOLIO: pass in a class to show, all others will be hidden */ $(this).bind("filterportfolio", function( e, classToShow ){ if(classToShow == settings.allTag){ $(this).trigger("show"); }else{ $(this).trigger("show", [ '.' + classToShow ] ); $(this).trigger("hide", [ ':not(.' + classToShow + ')' ] ); } if(settings.useHash){ location.hash = '#' + classToShow; } }); /* SHOW: show a single class*/ $(this).bind("show", function( e, selectorToShow ){ $(this).children(selectorToShow).animate(settings.show, settings.animationSpeed); }); /* SHOW: hide a single class*/ $(this).bind("hide", function( e, selectorToHide ){ $(this).children(selectorToHide).animate(settings.hide, settings.animationSpeed); }); /* ============ Check URL Hash ====================*/ if(settings.useHash){ if(location.hash != '') $(this).trigger("filter", [ location.hash ]); else $(this).trigger("filter", [ '#' + settings.allTag ]); } /* ============ Setup Tags ====================*/ if(settings.useTags){ $(settings.tagSelector).click(function(){ $('.column').trigger("filter", [ $(this).attr('href') ]); $(settings.tagSelector).removeClass('current'); $(this).addClass('current'); }); } }); } })(jQuery); $(document).ready(function(){ $('.column').filterable(); }); Drugi skrypt: $(document).ready(function() { $('ul.column li').hover(function() { $(this).siblings().stop().fadeTo(500,0.7); }, function() { $(this).siblings().stop().fadeTo(500,1); }); }); Dzięki za pomoc! Użytkownik pancho edytował ten post 27 listopad 2009, 09:23 stop() zatrzymuje animacje na elemencie. Musisz to w inny sposób rozwiązać. Zrób dwie funkcje, które będą zawierały $(this).siblings().stop().fadeTo(500,0.7);oraz$( this).siblings().stop().fadeTo(500,1);Teraz przypisz do funkcji w bibliotece w odpowiednich miejscach: przed rozpoczęciem animacji unbind() tych funkcji oraz po zakończeniu animacji hover() tych funkcji. Raczej nic trudnego. Użytkownik andrzej_aa edytował ten post 27 listopad 2009, 10:54 Dzięki za pomoc - ale chyba nie jestem jeszcze na tym stopniu zaawansowania :/ Moge cię prosić o bardziej szczegółowe rozwiązanie... Wielki Thx. Nie zwróciłem uwagi, że dałeś skrypt i nie przejrzałem go. To może inny sposób. Nie testowałem go, ale spróbuj tak:$(document).ready(function() { $('ul.column li').hover(function() { $('ul.column').not(':animated').children(this).siblings( ).stop().fadeTo(500,0.7); }, function() { $('ul.column').not(':animated').children(this).siblings( ).stop().fadeTo(500,1); }); }); dzieki dzieki... poszedlem pierwszym tropem, jako ze z Jquery zaczynam zajelo mi to dluzsza chwile... Przed pierwsza animacja dodalem unbind() dla hover'a, a po jej zakonczeniu ponownie funkcja hover. Dziala jak ta lala. Dzieki! |
|||
Sitedesign by AltusUmbrae. |