Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: jquery pageslide

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266

    jquery pageslide

    Salve a tutti, avevo già aperto una discussione simile a questo, pensavo di aver risolto ma ho solo sviato il problema.

    Ho questo benedetto script, jquerypage slide che mi fa uscire una pagina o un div da destra o sinistra con una transizione precisamente slide!

    Vi mostro il codice:

    Questo mi fa uno slide di una pagina esterna da sinistra verso destra:

    codice:
    Link text
    <script>
        $("a.first").pageslide();
    </script>
    Questo invece mi fa uno slide di un div nascosto da destra verso sinistra:

    codice:
    Link text
    <div id="modal" style="display:none">
        <h2>Modal</h2>
        Close
    </div>
    <script>
        $(".second").pageslide({ direction: "left", modal: true });
    </script>
    Lo script funziona benissimo solo che qualsiasi ulteriore script (un fancybox ad esempio) contenuto all'interno del id modal non va, addirittura non riesce neanche a leggere il file css di quello script. Le ho provate tutte, ho messo anche il jquery no conflict, ma nulla.

    Cosa posso fare?
    Se qualcosa non vi è chiara basta scriverlo e vedrò di spiegarmi meglio, comunque il discorso è semplice "Jquery page slide funziona, ma se inserisco un ulteriore script all'interno del div nascosto, quest'ultimo non funziona".

    Preciso che non posso usare il primo caso quello della pagina esterna _secondary.html perchè il fancybox ad esempio funzionerà solo li dentro, perchè funziona come un iframe.

    Grazie anticipatamente!

  2. #2
    Ma non è che lo script è caricato prima del body? mi sembra come se carica prima lo script e poi il body quindi non gli è possibile essere utilizzato... prova a mettere lo script per esempio in questo modo:

    codice:
    <script type="javascript">
    $(function(){
    
      alert ("DOM completamento caricato"); //semplice alert
    
    });
    </script>
    Almeno la mia è una semplice supposizione....

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266
    di quale script parli? del pageslide o del fancybox?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266
    vi posto il codice dello script page slide:

    codice:
    /*
     * jQuery pageSlide
     * Version 2.0
     * http://srobbin.com/jquery-pageslide/
     *
     * jQuery Javascript plugin which slides a webpage over to reveal an additional interaction pane.
     *
     * Copyright (c) 2011 Scott Robbin (srobbin.com)
     * Dual licensed under the MIT and GPL licenses.
    */
    
    ;(function($){
        // Convenience vars for accessing elements
        var $body = $('body'),
            $pageslide = $('#pageslide');
        
        var _sliding = false,   // Mutex to assist closing only once
            _lastCaller;        // Used to keep track of last element to trigger pageslide
        
    	// If the pageslide element doesn't exist, create it
        if( $pageslide.length == 0 ) {
             $pageslide = $('<div />').attr( 'id', 'pageslide' )
                                      .css( 'display', 'none' )
                                      .appendTo( $('body') );
        }
        
        /*
         * Private methods 
         */
        function _load( url, useIframe ) {
            // Are we loading an element from the page or a URL?
            if ( url.indexOf("#") === 0 ) {                
                // Load a page element                
                $(url).clone(true).appendTo( $pageslide.empty() ).show();
            } else {
                // Load a URL. Into an iframe?
                if( useIframe ) {
                    var iframe = $("<iframe />").attr({
                                                    src: url,
                                                    frameborder: 0,
                                                    hspace: 0
                                                })
                                                .css({
                                                    width: "100%",
                                                    height: "100%"
                                                });
                    
                    $pageslide.html( iframe );
                } else {
                    $pageslide.load( url );
                }
                
                $pageslide.data( 'localEl', false );
                
            }
        }
        
        // Function that controls opening of the pageslide
        function _start( direction, speed ) {
            var slideWidth = $pageslide.outerWidth( true ),
                bodyAnimateIn = {},
                slideAnimateIn = {};
            
            // If the slide is open or opening, just ignore the call
            if( $pageslide.is(':visible') || _sliding ) return;	        
            _sliding = true;
                                                                        
            switch( direction ) {
                case 'left':
                    $pageslide.css({ left: 'auto', right: '-' + slideWidth + 'px' });
                    bodyAnimateIn['margin-left'] = '-=' + slideWidth;
                    slideAnimateIn['right'] = '+=' + slideWidth;
                    break;
                default:
                    $pageslide.css({ left: '-' + slideWidth + 'px', right: 'auto' });
                    bodyAnimateIn['margin-left'] = '+=' + slideWidth;
                    slideAnimateIn['left'] = '+=' + slideWidth;
                    break;
            }
                        
            // Animate the slide, and attach this slide's settings to the element
            $body.animate(bodyAnimateIn, speed);
            $pageslide.show()
                      .animate(slideAnimateIn, speed, function() {
                          _sliding = false;
                      });
        }
          
        /*
         * Declaration 
         */
        $.fn.pageslide = function(options) {
            var $elements = this;
            
            // On click
            $elements.click( function(e) {
                var $self = $(this),
                    settings = $.extend({ href: $self.attr('href') }, options);
                
                // Prevent the default behavior and stop propagation
                e.preventDefault();
                e.stopPropagation();
                
                if ( $pageslide.is(':visible') && $self[0] == _lastCaller ) {
                    // If we clicked the same element twice, toggle closed
                    $.pageslide.close();
                } else {                 
                    // Open
                    $.pageslide( settings );
    
                    // Record the last element to trigger pageslide
                    _lastCaller = $self[0];
                }       
            });                   
    	};
    	
    	/*
         * Default settings 
         */
        $.fn.pageslide.defaults = {
            speed:      200,        // Accepts standard jQuery effects speeds (i.e. fast, normal or milliseconds)
            direction:  'right',    // Accepts 'left' or 'right'
            modal:      false,      // If set to true, you must explicitly close pageslide using $.pageslide.close();
            iframe:     true,       // By default, linked pages are loaded into an iframe. Set this to false if you don't want an iframe.
            href:       null        // Override the source of the content. Optional in most cases, but required when opening pageslide programmatically.
        };
    	
    	/*
         * Public methods 
         */
    	
    	// Open the pageslide
    	$.pageslide = function( options ) {	    
    	    // Extend the settings with those the user has provided
            var settings = $.extend({}, $.fn.pageslide.defaults, options);
    	    
    	    // Are we trying to open in different direction?
            if( $pageslide.is(':visible') && $pageslide.data( 'direction' ) != settings.direction) {
                $.pageslide.close(function(){
                    _load( settings.href, settings.iframe );
                    _start( settings.direction, settings.speed );
                });
            } else {                
                _load( settings.href, settings.iframe );
                if( $pageslide.is(':hidden') ) {
                    _start( settings.direction, settings.speed );
                }
            }
            
            $pageslide.data( settings );
    	}
    	
    	// Close the pageslide
    	$.pageslide.close = function( callback ) {
            var $pageslide = $('#pageslide'),
                slideWidth = $pageslide.outerWidth( true ),
                speed = $pageslide.data( 'speed' ),
                bodyAnimateIn = {},
                slideAnimateIn = {}
                	        
            // If the slide isn't open, just ignore the call
            if( $pageslide.is(':hidden') || _sliding ) return;	        
            _sliding = true;
            
            switch( $pageslide.data( 'direction' ) ) {
                case 'left':
                    bodyAnimateIn['margin-left'] = '+=' + slideWidth;
                    slideAnimateIn['right'] = '-=' + slideWidth;
                    break;
                default:
                    bodyAnimateIn['margin-left'] = '-=' + slideWidth;
                    slideAnimateIn['left'] = '-=' + slideWidth;
                    break;
            }
            
            $pageslide.animate(slideAnimateIn, speed);
            $body.animate(bodyAnimateIn, speed, function() {
                $pageslide.hide();
                _sliding = false;
                if( typeof callback != 'undefined' ) callback();
            });
        }
    	
    	/* Events */
    	
    	// Don't let clicks to the pageslide close the window
        $pageslide.click(function(e) {
            e.stopPropagation();
        });
    
    	// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
    	$(document).bind('click keyup', function(e) {
    	    // If this is a keyup event, let's see if it's an ESC key
            if( e.type == "keyup" && e.keyCode != 27) return;
    	    
    	    // Make sure it's visible, and we're not modal	    
    	    if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {	        
    	        $.pageslide.close();
    	    }
    	});
    	
    })(jQuery);

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: jquery pageslide

    Originariamente inviato da k4osz
    ... Lo script funziona benissimo solo che qualsiasi ulteriore script (un fancybox ad esempio) contenuto all'interno del id modal non va, addirittura non riesce neanche a leggere il file css di quello script. Le ho provate tutte, ho messo anche il jquery no conflict, ma nulla.

    Cosa posso fare?
    ...
    Javascript non carica codice javascript pertanto lo script di francybox lo metti nella pagina madre/principale e nel id modal esegui solo il richiamo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266
    Ciao Andrea,
    avevo già provato, infatti ho messo tutto il richiamo del fancybox nell'head, e nel div nascosto dal pageslide ho messo semplicemente cosi:

    Head:

    codice:
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>      
    <script>
    		!window.jQuery && document.write('<script src="js/jquery-1.4.3.min.js"><\/script>');
    	</script>
    	<script type="text/javascript" src="fancybox/jquery.mousewheel-3.0.4.pack.js"></script>
    	<script type="text/javascript" src="fancybox/jquery.fancybox-1.3.4.pack.js"></script>
    	<link rel="stylesheet" type="text/css" href="fancybox/jquery.fancybox-1.3.4.css" media="screen" />
        <script type="text/javascript">
    		$(document).ready(function() {
    			/*
    			*   Examples - images
    			*/
    
    			$("a#example1").fancybox();
    
    		});
    	</script>
    Body:

    codice:
    <li class="photogallery">PHOTOGALLERY
    
    <div id="gallery">
     <h2>Photogallery</h2>
    
    
    questo è il div nascosto che spunterà da destra verso sinistra.</p>
    
    
    [img]example/9_s.jpg[/img]</p>
    </div>
    
      <script src="js/jquery-1.7.1.min.js"></script>
        <script src="js/jquery.pageslide.min.js"></script>
        <script>
            /* Default pageslide, moves to the right */
    		var j = jQuery.noConflict();
            j(".first").pageslide();
            
            /* Slide to the left, and make it model (you'll have to call $.pageslide.close() to close) */
            j(".second").pageslide({ direction: "left", modal: true });
        </script>
    Non funziona comunque il fancybox o qualsiasi altro script.

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Metti un link alla pagina pubblica, e non usare noConflict che serve solo se usi due librerie diverse assieme (mootools/jquery) ma non è questo il caso
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266
    Ho trovato il problema! il display none che si da al div nascosto, quello è la causa, ma come faccio a risolvere? visto che quel display none è fondamentale al funzionamento dello script pageslide?

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova a sostituirlo con visibility, oppure lo credi al volo con il dom creaElement quando ti occorre.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266
    Ho provato anche con visibility ma niente. E come lo creo con il DOM?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.