2016-12-05 3 views
-1

Ich nehme eine Seite, die nicht jquery in der Dom verwiesen hat. Ich muss etwas von der jQuery-Funktionalität verwenden, also dachte ich mir, dass die beste Wette darin besteht, jquery in das vorhandene dom zu injizieren. Ich habe die Funktionsidee von Load jQuery with Javascript and use jQuery und How to include jQuery dynamically in any website using pure javascript .... keine dieser Lösungen scheint für mich zu arbeiten. Ich bekomme immer noch einen Fehler, den jquery Selektor nicht zu erkennen.Dynamisch laden jquery in plain Javascript

(function() { 
    function getScript(url, success) { 
     var script = document.createElement('script'); 
     script.src = url; 
     var head = document.getElementsByTagName('head')[0], 
      done = false; 
     // Attach handlers for all browsers 
     script.onload = script.onreadystatechange = function() { 
      if (!done && (!this.readyState 
       || this.readyState == 'loaded' 
       || this.readyState == 'complete')) { 
      done = true; 
      success(); 
      script.onload = script.onreadystatechange = null; 
      head.removeChild(script); 
      } 
     }; 
     head.appendChild(script); 
    } 
    getScript('https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js',function() { 
     // Yay jQuery is ready \o/ 
    });       


    cards = $('div:first'); 
    $('body').empty().append(cards); 

    // Delete first and second child divs 

    first = $('div:first div:first'); 
    $('div:first div:first').css('position', '').css('left', '').css('z-index', '').css('height', '250px').remove(); 

    second = $('div:first div:first'); 
    $('div:first div:first').css('position', 'relative').css('left', '').css('z-index', '').remove(); 

    $('body').empty().append(first).append(second); 
    })(); 
+2

Sie sollten Ihren eigenen Code in den Callback verschieben, wo er '// Yay ...' sagt. Nur dann wird Ihr Code ausgeführt, nachdem * jQuery geladen wurde. –

+0

wel; l das ist peinlich ... fühlen Sie sich frei zu antworten und schlecht akzeptieren –

+0

Es gibt keine solche Eigenschaft "onreadystatechange" auf Skriptelement, ich denke, es ist irreführende Informationen, nur "onload" ist genug. Hier ist die Antwort von Chris G akzeptabel. Hier ist der Plünderer für die gleiche https://plnrkr.co/edit/WYV7PQDX9wJTjnVfQENa?p=preview –

Antwort

1

Sie sollen Ihren eigenen Code in den Rückruf bewegen, wo es heißt: // Yay .... Nur dann Code ausgeführt wird nach jQuery geladen wurde.

getScript('https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js', function() { 
    // Yay jQuery is ready \o/ 

    $('body').empty().append($('div:first')); 
    // Delete first and second child divs 
    for (var i = 0; i < 2; i++) { 
     $('div:first div:first').remove(); 
    } 
});       
Verwandte Themen