2010-09-17 7 views
6

Ich erstelle ein benutzerdefiniertes jQuery-Plugin für ein Projekt, an dem ich gerade arbeite. Ich möchte ein Objekt, das zu einem anderen jQuery-Plugin passt, zurückgeben ... anstatt sicherzustellen, dass jede Seite, die mein Plugin benutzt, auch dieses andere Plugin hat, ist es möglich, es in das eigentliche Plugin zu integrieren?Wie man ein externes Plugin in ein anderes jQuery-Plugin einbaut, das erstellt wird

vielmehr die folgenden auf jeder Seite als ein, die mein Plugin verwendet:

(function($) { 
      $.include('url_to_plugin'); 
      //code to implement my plugin 
})(jQuery); 

Danke für den Vorschlag:

<script type="text/javascript" src="url_to_my_plugin" /> 
<script type="text/javascript" src="url_to_plugin" /> 

ich eine Option, die erlauben würde, so etwas wie, wenn es sehen wollte Marko ... Ich mache vielleicht etwas falsch, weil das Plugin, das ich verweise, nicht erkannt wird. Unten ist mein Code:

(function($) { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = 'jquery.simplemodal.js'; //in same dir as my plugin 
    //tried both 
    document.body.appendChild(script); 
    document.getElementsByTagName('head')[0].appendChild(script); 

    $.fn.SUI_CheckProgress = function(options) { 
      return this.each(function() { 
       var obj = $(this); 
       var nDiv = $('<div>'); 
       nDiv.modal(); //error nDiv.modal() is not a function 
       $(obj).append(nDiv); 
      } 
    }; 
}); 

ich sowohl innerhalb als das Skript versucht, zu erklären und außerhalb des eigentlichen Funktionsaufrufes (das Ideal ist es global zu geschehen). Ich habe überprüft, ob der Code korrekt ausgeführt wird, wenn ich auf das Skript in der Seite referenziere, von der ich anrufe. Wenn ich die Referenz entferne, schlägt sie fehl. Jede zusätzliche Information zum programmatischen Hinzufügen von Skripten zu einer Seite wäre willkommen.

Fixed: Mein Problem war, dass ich das gleiche Verzeichnis wie das js-Plugin verweise, aber wenn es zu der Seite hinzugefügt wird, ist es außerhalb dieses Verzeichnisses.

war

script.src = 'jquery.simplemodal.js'; 

Fest
script.src = 'js/jquery.simplemodal.js'; 
+0

Sie nicht in eine jquery obj' machen ' Objekt zweimal ... benutze 'obj.append (nDiv)' – Mottie

+0

das war tatsächlich, weil der Anruf in einem Ajax-Aufruf eingebettet ist, verließ ich die Ajax-Sachen, um zu vereinfachen. – jon3laze

Antwort

2

Sicher - Sie ein neues Skript Element erstellen und hängen Sie ihn an den Kopf.

var script = document.createElement('script'); 
script.src = 'url-to-plugin'; 
script.type = 'text/javascript'; 
document.getElementsByTagName('head')[0].appendChild(script); 

Wenn dies nicht funktioniert, vielleicht die Methode versuchen, auf this page, es ist ein etwas anderer Ansatz mit setAttribute.

+0

Vielen Dank für Ihre schnelle Antwort. Ich konnte den Code nicht zum Funktionieren bringen. Ich habe meinen Beitrag aktualisiert, um den Code und das Problem zu berücksichtigen. Danke – jon3laze

+0

Haben Sie immer noch Probleme? Ich habe bemerkt, dass du meine Antwort akzeptiert hast ... Ich habe meinen Post bearbeitet, um eine weitere Methode zum Festlegen der Attribute des 'script'-Elements hinzuzufügen. Kannst du bitte den '' Abschnitt mit Firebug untersuchen und sehen, ob etwas daran angehängt ist? – Marko

+0

Danke Marko, es funktioniert jetzt. Ich habe falsch über die Dateistruktur nachgedacht. Ich habe auf das js-Plugin verwiesen, als wäre es im selben Verzeichnis wie mein Plugin, weil es ...wenn es jedoch zur tatsächlichen Seite hinzugefügt wird, ist es nicht. : P – jon3laze

3

Sie können auch getScript Funktion von jQuery verwenden.

könnte es mit Rückrufen für den Erfolg und/oder Miss wie verwendet werden:

$.getScript("somejs.js", function(data, textStatus, jqxhr) { 
    console.log("callback");  
} 

$.getScript("somejs.js") 
.done(function(script, textStatus) { 
    console.log("done callback"); 
}) 
.fail(function(jqxhr, settings, exception) { 
    console.log("fail callback"); 
});  

oder ohne einen Rückruf wie zuweisen: benötigen

$.getScript("somejs.js");    
Verwandte Themen