javascript - Hur man lägger till jQuery i JS-fil


Jag har lite kod som är specifik för att sortera tabeller. Eftersom koden är vanlig på de flesta sidor vill jag göra en JS-fil som kommer att ha koden och alla sidor som använder den kan referera till den därifrån.

Problemet är: Hur lägger jag till jQuery och tabellsorterings-pluginet i den .js-filen?

Jag försökte något liknande detta:

document.writeln('<script src="/javascripts/jquery.js" type="text/javascript"></script>');
document.writeln('<script type="text/javascript" src="/javascripts/jquery.tablesorter.js"></script>');

men detta verkar inte fungera.

Vad är det bästa sättet att göra detta?

Svar #1

var script = document.createElement('script');
script.src = 'https://code.jquery.com/jquery-3.6.3.min.js'; // Check https://jquery.com/ for the current version
document.getElementsByTagName('head')[0].appendChild(script);

Svar #2

Om du vill inkludera jQuery-kod från en annan JS-fil borde detta göra tricket:

Jag hade följande i min HTML-fil:

<script src="jquery-1.6.1.js"></script>
<script src="my_jquery.js"></script>

Jag skapade en separat my_jquery.js-fil med följande:

$(document).ready(function() {
  $('a').click(function(event) {
    event.preventDefault();
    $(this).hide("slow");
  });
});

Svar #3

Du kan använda koden nedan för att ladda jQuery i din JS-fil. Jag har också lagt till en jQuery JSFiddle som fungerar och använder en självexekverande funktion.

// Anonymous "self-invoking" function
(function() {
    var startingTime = new Date().getTime();
    // Load the script
    var script = document.createElement("SCRIPT");
    script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
    script.type = 'text/javascript';
    document.getElementsByTagName("head")[0].appendChild(script);

    // Poll for jQuery to come into existance
    var checkReady = function(callback) {
        if (window.jQuery) {
            callback(jQuery);
        }
        else {
            window.setTimeout(function() { checkReady(callback); }, 20);
        }
    };

    // Start polling...
    checkReady(function($) {
        $(function() {
            var endingTime = new Date().getTime();
            var tookTime = endingTime - startingTime;
            window.alert("jQuery is loaded, after " + tookTime + " milliseconds!");
        });
    });
})();

Annat alternativ : - Du kan också prova Require.JS som är en JS-modulladdare.

Svar #4

/* Adding the script tag to the head as suggested before */

    var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = "http://code.jquery.com/jquery-2.2.1.min.js";

    // Then bind the event to the callback function.
    // There are several events for cross browser compatibility.
    script.onreadystatechange = handler;
    script.onload = handler;

    // Fire the loading
    head.appendChild(script);

    function handler(){
       console.log('jquery added :)');
    }

Relaterade artiklar