2009-08-13 7 views
1

Ich versuche, mehrere verschiedene js-Dateien in eine Seite zu integrieren. Aus irgendeinem Grund scheinen die ersten zu brechen. Hier ist der Code ich verwende:beim Importieren mehrerer Javascript-Dateien scheint das Javascript zu brechen

<link href="inc/css/style.css" rel="stylesheet" type="text/css" /> 
<link rel="stylesheet" href="inc/css/lightbox.css" type="text/css" media="screen" /> 
<script type="text/javascript" src="inc/js/prototype.js"></script> 
<script type="text/javascript" src="inc/js/scriptaculous.js?load=effects"></script> 
<script type="text/javascript" src="inc/js/lightbox.js"></script> 
<script type="text/javascript"> 
<!-- 
function MM_swapImgRestore() { //v3.0 
    var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; 
} 
function MM_preloadImages() { //v3.0 
    var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); 
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) 
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} 
} 

function MM_findObj(n, d) { //v4.01 
    var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { 
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
    if(!x && d.getElementById) x=d.getElementById(n); return x; 
} 

function MM_swapImage() { //v3.0 
    var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) 
    if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} 
} 
</script> 

    <script type="text/javascript" src="inc/js/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript" src="inc/js/jquery.slideshow.lite-0.4.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
     $(document).ready(function(){ 
      $("#slideshow2").slideshow({ 
       pauseSeconds: 6, 
       height: 196 
      }); 
     }); 
    </script> 

Die ersten Dateien sind für einen Leuchtkasten und andere Zwecke verwendet und die zweiten sind für eine Diashow verwendet. Abhängig von der Reihenfolge wird der eine oder der andere funktionieren, aber niemals beide gleichzeitig. Was mache ich falsch?

Jede Hilfe wird sehr geschätzt, danke.

+0

JQuery viele Leuchtkasten Implementierung verwenden hat. Hast du darüber nachgedacht, den Proto-Leuchtkasten und die Portierung auf eine jQuery basierte zu scrapen? – redsquare

Antwort

3

Sie müssen jquery in no-Konflikt-Modus auszuführen, siehe:

Aus dem oben:

<html> 
<head> 
    <script src="prototype.js"></script> 
    <script src="jquery.js"></script> 
    <script> 
    jQuery.noConflict(); 

    // Use jQuery via jQuery(...) 
    jQuery(document).ready(function(){ 
     jQuery("div").hide(); 
    }); 

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 
    </script> 
</head> 
<body></body> 
</html> 
+0

Ahh, ich verstehe was du meinst. Ich bin nicht ganz sicher über die Syntax obwohl, muss ich den gesamten Code hinzufügen, die Sie geliefert von "jQuery.noConflict(); // Verwenden Sie jQuery über jQuery (...) jQuery (Dokument). ready (function() { jQuery ("div"). hide(); }); // Benutze Prototype mit $ (...), etc. $ ('someid'). hide(); " Wenn ja wo? Ist es möglich, dass Sie den Code, den ich vermisse, in das, was ich gepostet habe, einfügen können? Vielen Dank. –

+0

@waywardmd - Nein, das ist nicht ein Beispiel dafür, wie es benutzt wird. Fügen Sie den Prototyp vor jquery ein und setzen Sie einfach die Zeile jQuery.noConflict(); am Anfang deines Skripts. Ich würde vorschlagen, die Links zu lesen, die ich zur Verfügung gestellt habe. – karim79

+0

@waywardmd - Stellen Sie beim Schreiben des jQuery-Skripts sicher, dass Sie jQuery anstelle des '$' verwenden, das der Prototyp verwendet, z. jQuery.hide ("langsam"); – karim79

1

Sie mit jQuery und Prototyp, die beide eine $() Funktion definieren.

Sie benötigen

jQuery.noConflict(); 
Verwandte Themen