2010-03-12 3 views
1

Im assez sûr que cela a une solution simple. J'utilise jCarousellite, et je veux changer le comportement des boutons de navigation intégrés pour déclencher le survol.Comment puis-je déclencher un clic en continu pendant que quelque chose est plané?

$("#carousel").jCarouselLite({ 


vertical: true, 
btnNext: ".btn-down", 
btnPrev: ".btn-up", 
visible:6, 
circular: false 

}); 

$("#carousel .btn-down").hover(function() { 

$("#carousel .btn-down").click(); 

}); 

mais il se déclenche qu'une seule fois quand mouseover, je besoin de tirer continueously tout mouseover.

+0

La mise en route de votre effet pourrait être un meilleur départ, le déclenchement continu d'un clic n'a jamais été la meilleure solution à chaque fois que cela a été demandé. –

+0

Ah, sry! Je veux que le carrousel passe à l'objet suivant en stationnaire. Figuré en utilisant la fonctionnalité intégrée de jCousousLite serait la solution la plus rapide. – russjman

Répondre

3
var nav = function() { 
    $("#carousel .btn-down").click(); // next move 
    $("#carousel").data(
    'hover', 
    window.setTimeout(nav, 1000); // continue in 1000 ms 
); 
}; 
$("#carousel .btn-down").hover(
    nav, 
    function() { 
    window.cancelTimeout ($("#carousel").data('hover')); // stop the navigation 
    } 
); 
+0

cela a fonctionné parfaitement. Cela me surprend que les solutions doivent être si rondes. Salut mon pote! – russjman

3

Vous pouvez utiliser setInterval pour commencer à déclencher l'événement à intervalles réguliers en vol stationnaire et utiliser clearInterval pour l'arrêter lorsque l'utilisateur cesse de planer. Il serait également plus propre de déclencher le comportement réel que vous voulez au lieu de déclencher un événement click, en supposant que le plugin que vous utilisez supporte une telle API. Quelque chose comme ceci:

var effectInterval; 

$('#carousel .btn-down').hover(function() { 
    effectInterval = setInterval(function() { 
    $('#carousel').advanceToNextImage(); // sample API call, check your plugin's docs for how it might actually be done 
    }, 5000); 
}, function() { 
    clearInterval(effectInterval); 
}); 
+0

* s'il vous plaît * n'utilisez pas de chaînes dans setInterval ou setTimeout, c'est une mauvaise pratique et ajoute un traitement supplémentaire sans raison ... c'est encore plus long dans ce cas: 'setInterval (triggerEffect, 5000);' –

+0

@Nick - Ha, I juste édité ma réponse pour changer cela, puis vu votre commentaire dès que l'édition enregistrée. –

+0

Qu'est-ce que 'advanceToNextImage'? Je pense que vous regardez un autre plugin de galerie? –

0

Vous pouvez définir un intervalle pour cliquer comme celui-ci, faites la même chose pour le bouton ci-contre:

$("#carousel .btn-down").hover(function() { 
    $(this).data("to", setInterval(function() { $("#carousel .btn-down").click(); }, 200)); 
}, function() { 
    clearInterval($(this).data("to")); 
}); 
4

moi aussi eu le même problème avec mon code, alors je suis venu avec cette solution ..

$(document).ready(function(){ 
    $("someid1").hover(function a() { //on hover over some element with id-> someid1 
     $("#someid2").animate({ 
      width:"+=10" 
     }, function(){ 
      a(); 
     }); 
    }); //execute animation function and call itself again and again on mouseover 
});              

$("someid1").mouseout(function() { 
    $("#someid2").stop(); //stop the animation on mouseout. 
}); 
}); 

Cela a fait l'affaire pour moi. J'espère que cela vous aide.

Questions connexes