Buonasera a tutti,
sto cercando di modificare una vecchia funzione e renderla compatibile con lo strict mode e con jquery 3.3, ma sto trovando parecchie difficoltà, sapreste darmi una mano?
Una parte della vecchia funzione:
Una parte della nuova:codice:var num_modali = 0; _modale = function(){ //setta il livello prendendolo dal numero attuale di modali aperte this.livello_m = num_modali; //setta il percorso this.percorso = function(){ return (this.livello_m > 0) ? $('body').find('#modale_' + this.livello_m).find(modale_content) : $('body'); }; //setta le liste record this.listarecord = function(){ return lista_record = (this.livello_m > 0) ? '#lista_records_modale' : '#lista_records'; }; //scala di un livello this._pre = function(){ this.livello_m-- ; return this; }; //restituisce il selettore this._go = function(){ return this.percorso(); }; .......
codice:var num_modale = 0; var modale = { percorso: function(){ return (modale.num_modali > 0) ? 'body #modale_' + modale.num_modali + ' .modale_content' : 'body'; }, listaRecord: function(){ return (num_modali > 0) ? '#lista_records_modale' : '#lista_records'; }, pre: function(){ return num_modale-- ; }, go: function(){ return this.percorso(); }, ......
Ora la prima cosa che non riesco a fare � la concatenazione di chiamate, ovvero, nella vecchia funzione potevo chiamare per es. _modale()._pre()._pre()._go() e ottenevo quello che volevo, ora invece non riesco ad ottenere la stessa cosa, quindi se faccio per es. modale.pre().pre().go() mi restituisce pre is not a function
Questo è il primo ostacolo, la vecchia chiamata _modale()._pre()._pre()._go() mi avrebbe restituito, partendo dal livello attuale per es. 3, dove in questo caso il selettore sarebbe #modale_2, con il primo pre scendrebbe di uno, con il secondo di 2 ed avrei il selettore body ovviamente atraverso le altre chiamate, quindi pre() -1 (sulla base del livello attuale), pre() -1 (come prima), go() che richiama percorso che a questo punto utilizza il valore modificato, se fosse come nell'esempio precedente 2, avrei 0, ovvero la "root" della pagina quindi body e si comporterebbe di conseguenza.
Spero di essermi spiegato perchè sò che non è semplice
Grazie a chi volesse aiutarmi


Rispondi quotando