Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    [jquery] scrolling che non si ferma correttamente

    salve ragazzi ho trovato uno scroller orizzontale in jquery e ho cercato di adattarlo alle mie esigenze,ma sia nello scorrere le notizie a destra , sia sinistra se effettuo col mouse il click in modo continuo,non si ferma,ma va avanti...mentre se per ogni click attendendo un instante arrivo alla fine delle news e si ferma regolarmente
    questo è lo scroller:

    codice:
    <div id="mainBox">
    	[img]images/arrow-left.png[/img]    //corrispondono alle frecce destra e sinistra
    	[img]images/arrow-right.png[/img]
    	<div id="newsBoxCont">
            <ul id="newsBox">
    	    <li class="singleNews">
                <h2>Eventi in programmazione</h2>
    	    
    
    
                Iscriviti ai prossimi eventi
                </p>
                
    	    <li class="singleNews">
                <h2>Importante successo</h2>
                
    
    
                I due appuntamenti
                </p>
                
                <li class="singleNews">
                <h2>Eventi in programmazione</h2>
                
    
    
                Iscriviti ai prossimi eventi
                </p>
                
               <li class="singleNews">
                <h2>Importante successo</h2>
                
    
    
                I due appuntamenti
                </p>
                    	[/list]
        </div>
    </div>
    mentre questo è lo script:
    codice:
    <script type="text/javascript">
    $(document).ready(function(){
    	var nListElem= $('#newsBox').find('li').length;
    	var boxSize = 211;
    	$("#newsBox").width(boxSize*nListElem);					   
    	
    	$('img.left').click(function(){
    		
    		if (parseInt($("#newsBox").css('left'))<0){ 
    			$("#newsBox").animate({"left": "+=211px"}, "slow");
    		}
    	});
    	
    	
    	$('img.right').click(function(){
    		if ( parseInt($("#newsBox").css('left')) - 631 - 211 > boxSize*nListElem*-1   ){ 
    			$("#newsBox").animate({"left": "-=211px"}, "slow");
    		}
    		
    	});
    
    });
    </script>
    saluti

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    mmm
    ...
    prova ad aggiungere un alert nelle funzioni che gestiscono il click e stampati la seguente informazione:

    - l'attributo css "left" di newsBox

    vedi come cambia di click in click e cerca di determinare il valore massimo e minimo altre i quali lo scroller va disabilitato.
    codice:
    	var max = ...;
    	var min = ...;
    
    	$('img.left').click(function(){
    		if (parseInt($("#newsBox").css('left'))<min){ 
    			$("#newsBox").animate({"left": "+=211px"}, "slow");
    		}
    	});
    
    	$('img.right').click(function(){
    		if ( parseInt($("#newsBox").css('left')) > max  ){ 
    			$("#newsBox").animate({"left": "-=211px"}, "slow");
    		}
    		
    	});
    Penso però dovrai derivare min e max dai seguenti valori (dei quali non conosco bene il significato...):
    - 631
    - 211
    boxSize
    nListElem
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    codice:
    $('img.left').click(function(){		
    		if (parseInt($("#newsBox").css('left'))<0){ 
    			$("#newsBox").animate({"left": "+=211px"}, "slow");
    		}
    		else
    		{
    			if (parseInt($("#newsBox").css('left'))<211){
    			alert('stop');
    			}
    		}
    		
    	});
    aggiungendo l'alert sia a destra che a sinistra si ferma correttamente...
    il problema avviene quando clicco in modo continuo e sproporzionato il tasto sinistro del mouse

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    il problema principale è che dovrei imporre un click al secondo max....

    ho impostato che quando arriva alla fine rende invisibile il botton,ma è inutile xkè se clicco + volte contemporeaneamente prosegue lo scroller
    codice:
    $('img.right').click(function(){
    		if ( parseInt($("#newsBox").css('left')) - 631 > boxSize*nListElem*-1   ){ 
    			$("#newsBox").animate({"left": "-=211px"}, "slow");
    		}	
    		else
    		{
    			//alert(parseInt($("#newsBox").css('left')) - 631 - 211);
    			if( parseInt($("#newsBox").css('left')) - 631 - 211 > -1263 )
    			{
    			$(this).find('img.left').css('visibility','hidden');
    			$(this).css('visibility','hidden');
    			}
    		}	
    	});

  5. #5
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Ma allora... se sai quanti click puoi fare a destra e quanti ne puoi fare a sinistra, mettici un contatore globale..

    diciamo che l'utente parte da contatore=0, al primo click a destra contatore=1, al secondo contatore=2.

    Se contatore=0, il click a sinistra è disabilitato. Se contatore>0, il click a sinistra diminuisce di 1 il contatore (contatore-=1)
    Se contatore=max, il click a destra è disabilitato. Se contatore<max, il click a destra aumenta di 1 il contatore (contatore+=1)

    Il max dovrebbe essere il numero degli oggetti totali - gli oggetti in pagina + 1 (con un alert lo puoi verificare facilmente...)

    Però... il fatto che si veda il bianco potrebbe anche essere voluto, insomma... potrebbe anche andar bene così... non sarà il massimo, ma l'utente ha molto di cui lamentarsi, è arrivato a fine a corsa quando vede il prima quadrato bianco. Se insiste ancora... o è un idiota o vuole vedere che succede, quindi mi sembra giusto accontentarlo
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.