Chiamare una funzione javascript da un altro file

28 mar 2016, 01:58:29
Visualizzazioni: 32.4K
Voti: 0

In WordPress, per utilizzare $ invece del prefisso jQuery, ho aggiunto il seguente codice attorno a tutto il codice js:

jQuery(function($) {
    ...
});

Funziona bene, ma non riesco a chiamare un oggetto da un altro file javascript, persiste il seguente problema:

Slider is not defined

Questo è il mio codice:

file1.js

jQuery(function($) {
    var slider = new Slider();
});    

file2.js

jQuery(function($) {
    function Slider() {
       this.nb_ele = 10;
    }
});

Sembra che poiché lo spazio di lavoro dei due file js è diverso, non possono chiamare funzioni l'uno dall'altro. Qualche soluzione?

0
Tutte le risposte alla domanda 2
1

Il problema che hai è che Slider non è accessibile al di fuori del suo ambito poiché è definito all'interno di .ready(), anche se hai usato la forma abbreviata. La funzione deve essere disponibile nell'ambito globale:

file1.js

function Slider() {
   this.nb_ele = 10;
}

jQuery(function($) {
  // ...
});

file2.js

jQuery(function($) {
    var slider = new Slider();
}); 

Se vuoi che Slider rimanga nel document ready, dovrai usare un'espressione di funzione per aggiungere la funzione all'oggetto globale:

jQuery(function($) {
    window.Slider= function () {
       this.nb_ele = 10;
    };
});

Vedi anche: https://stackoverflow.com/questions/1449435/splitting-up-jquery-functions-across-files

28 mar 2016 04:38:20
Commenti

Questo è ciò di cui ho bisogno, grazie. Devo utilizzare jQuery nella funzione Slider, quindi deve rimanere nell'ambito jQuery, ma aggiungendo "window" prima del nome della funzione, verrà aggiunto all'oggetto globale.

Trong Lam Phan Trong Lam Phan
29 mar 2016 02:44:05
0

Ho avuto lo stesso tipo di problema.

Puoi risolverlo anche con:

var $ = jQuery.noConflict();
$(document).ready(function(){

il tuo codice qui

});

Devi usare questo trucco anche in tutti i tuoi file javascript, intendo var $ = jQuery.noConflict();.

Dopodiché Dammeul ha ragione.

28 mar 2016 04:57:38