Bonjour,
Au départ, je cherchais un jquery ui tabs mouseover mais avec effet lors du changement d'onglet, il y a avec mouseover mais avec effet non (slide, explode, etc)
J'ai donc décidé d'en créer moi même
Mon principe est simple: j'ai 4 pages donc 4 div dont les 3 en display:none au départ
Voici d'abord le code JS jquery de la simulation de ui tabs d'abord
Ensuite j'ajoute jQuery UI EFFECTS
Le soucis c'est que si on fait des mouvements rapides ou brusques sur les onglets (des DIV de id=tab0 à tab4), un évènement n'a donc pas fini de s'exécuter qu'un autre arrive
Quelquefois tout est en show() ou tout est en hide(), 2 en show(), l'animation boucle, etc.
Bref, je cherche à éviter cela, en effet ici, l'animation dure un demi-seconde
Modifié par dummycreation (22 Apr 2010 - 07:52)
Au départ, je cherchais un jquery ui tabs mouseover mais avec effet lors du changement d'onglet, il y a avec mouseover mais avec effet non (slide, explode, etc)
J'ai donc décidé d'en créer moi même
Mon principe est simple: j'ai 4 pages donc 4 div dont les 3 en display:none au départ
Voici d'abord le code JS jquery de la simulation de ui tabs d'abord
jQuery(document).ready(function() {
jQuery('#tab1').mouseover(function() {
jQuery('#page4').hide();
jQuery('#page3').hide();
jQuery('#page1').hide();
jQuery('#page2').show();
});
jQuery('#tab2').mouseover(function() {
jQuery('#page4').hide();
jQuery('#page1').hide();
jQuery('#page2').hide();
jQuery('#page3').show();
});
jQuery('#tab3').mouseover(function() {
jQuery('#page3').hide();
jQuery('#page1').hide();
jQuery('#page2').hide();
jQuery('#page4').show();
});
jQuery('#tab0').mouseleave(function() {
jQuery('#page4').hide();
jQuery('#page3').hide();
jQuery('#page2').hide();
jQuery('#page1').show();
});
});
Ensuite j'ajoute jQuery UI EFFECTS
//callback function to bring a hidden box back
function callbackpage2() {
setTimeout(function() {
jQuery("#page2:hidden").removeAttr('style').hide().fadeIn();
}, 0);
};
function callbackpage3() {
setTimeout(function() {
jQuery("#page3:hidden").removeAttr('style').hide().fadeIn();
}, 0);
};
function callbackpage4() {
setTimeout(function() {
jQuery("#page4:hidden").removeAttr('style').hide().fadeIn();
}, 0);
};
function callbackpage1() {
setTimeout(function() {
jQuery("#page1:hidden").removeAttr('style').hide().fadeIn();
}, 0);
};
jQuery(document).ready(function() {
var options = {};
jQuery('#tab1').mouseover(function() {
jQuery('#page4').hide();
jQuery('#page3').hide();
jQuery('#page1').hide();
jQuery('#page2').show();
jQuery('#page2').effect('slide', options, 500, callbackpage2);
});
jQuery('#tab2').mouseover(function() {
jQuery('#page4').hide();
jQuery('#page1').hide();
jQuery('#page2').hide();
jQuery('#page3').show();
jQuery('#page3').effect('slide', options, 500, callbackpage3);
});
jQuery('#tab3').mouseover(function() {
jQuery('#page3').hide();
jQuery('#page1').hide();
jQuery('#page2').hide();
jQuery('#page4').show();
jQuery('#page4').effect('slide', options, 500, callbackpage4);
});
jQuery('#tab0').mouseleave(function() {
jQuery('#page4').hide();
jQuery('#page3').hide();
jQuery('#page2').hide();
jQuery('#page1').show();
jQuery('#page1').effect('slide', options, 500, callbackpage1);
});
});
Le soucis c'est que si on fait des mouvements rapides ou brusques sur les onglets (des DIV de id=tab0 à tab4), un évènement n'a donc pas fini de s'exécuter qu'un autre arrive
Quelquefois tout est en show() ou tout est en hide(), 2 en show(), l'animation boucle, etc.
Bref, je cherche à éviter cela, en effet ici, l'animation dure un demi-seconde
Modifié par dummycreation (22 Apr 2010 - 07:52)