Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [jQuery] conflitto 'this' e variabili private di una classe

    Ciao ragaz,
    mi trovo a dover utilizzare un frammento di codice jQuery dentro la mia classe:

    codice:
    $( '#elemento' ).click( function() {
        this.run();	
    });
    Questo estratto si trova dentro una funzione; quando si clicca sull'elemento vorrei far partire il metodo run()... ma qual'è la sfiga? Il 'this', essendo all'interno di uno scope jQuery (se così si può dire) viene interpretato come #elemento! E naturalmente il browser si confonde.
    Conoscete una soluzione per questo fastidioso problemino?
    Ringrazio e saluto!

  2. #2
    Il this jquery è così:

    codice:
    $( '#elemento' ).click( function() {
        $(this).run();	
    });
    Se però per te this è "qualcos'altro" dovrebbe essere sufficiente che definisci una variabile, tipo:

    codice:
    var mioelemento = this;
    $( '#elemento' ).click( function() {
        mioelemento.run();	
    });

  3. #3
    ciao Senamion, direi che ci stiamo avvicinando. Il mio this è "qualcos'altro", nello specifico un metodo della classe in cui mi trovo.
    Secondo il tuo indizio dovrei inserire il metodo dentro ad una variabile, ma questo restituisce (credo giustamente) errore...

  4. #4
    Prova a postare un po' + di codice, ed eventualmente l'erroer che ti da'

  5. #5
    Volentieri e prima di tutto grazie per il supporto

    codice:
    function miaclasse()
    {
        this.metodo1 = function()
        {
            // ...
        }
    
       this.metodo2 = function()
        {
            $( '#elemento' ).click( function() {
                this.metodo1();	 
            });
        }
    }
    Siamo dentro alla classe "miaclasse", il metodo2 vuole chiamare il metodo1 quando si clicca su #elemento. Semplicemente non viene riconosciuto il metodo this.metodo1() ("not a function"), perchè come dicevo prima quel "this" si riferisce all'oggetto jquery

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.