Problema jQuery Plugin per floating div, this is the problem!

Pubblicità

adverman

Nuovo Utente
Messaggi
2
Reazioni
0
Punteggio
24
Ciao a tutti,
sto sviluppando un semplice plugin in jQuery, che mi permetta di spostare elementi della DOM (per lo più div), semplicemente assegnando un valore top dell'elemento pari a quanto ho scrollato la pagina, moltiplicato per un coefficiente che passo nella chiamata come parametro (speed).
Il codice è il seguente:
Codice:
// JavaScript Document


(function($) {
    $.fn.parallasse = function(speed, easing, duration)
        {
        this.each(
        $(document).ready(function () {  
            $(window).scroll(function (event) {
                    var y = $(window).scrollTop();
                    var z = -(Math.round(y*speed));


                    this.animate({
                    top: z + "px"
                    },
                    duration,
                    easing
                    );


                });
            }));
        return this;
    }
})(jQuery);


Il codice così com'è non funziona, ma basta sostituire alla riga 10 this con l'id di uno dei div da animare e il tutto funziona. Evidenetemente non ho ancora ben capito a cosa faccia riferimento questo this, ho letto che si può riferire a cose diverse e non sempre ad un elemento della DOM.
Forse è questo il problema?
Help me, please. :cav:
 
Ciao, non sono un genio ma this in ogni linguaggio a oggetti this è sempre l'oggetto stesso all'interno del quale stai eseguendo un metodo.

jQuery's this: demystified

---------- Post added at 09:01 ---------- Previous post was at 08:58 ----------

In pratica dice che this rappresenta un elemento della DOM quando sei in una funziona callback di jquery mentre diventa un riferimento a una tua funzione quando sei nell'ambito di un tuo metodo.

Ti consiglio di inserire 'console.log(this)' come controllo così vedi cosa succede al valore in questione durante l'esecuzione.
 
Ciao,
grazie mille per la tua attenzione, ho trovato interessante l'articolo che mi hai segnalato. Di fatto però non ho capito come poter risolvere il problema, nel senso che:
  • il this inserito prima di .animate non fa riferimento all'elemento DOM target della funzione, bensì all'oggetto jQuery; questo è appurato.
  • il problema ora è come faccio a creare un riferimento all'elemento DOM? Avevo pensato con una variabile? Non so se si può fare... eppure sembra la cosa più semplice del mondo...:help:
 
Ciao, sono una capra di jquery ma, se funziona come gli altri linguaggi basati su oggetti, dovresti avere un handler per la finestra che al suo interno ha tutti gli elementi. Dovresti chiamare l'oggetto esterno e ciclare al suo interno.

Siccome non sono ancora in modalità sviluppo Jquery ma ho un libro sulla mia scrivania da aprire, ti linko un'altra fonte esterna :)
loop through div - jQuery (English) | Google Groups
 
Pubblicità
Pubblicità
Indietro
Top