# Mootools und Jquery in einem Dokument geht nicht



## sugar (11. Februar 2010)

Ich würde gern zwei verschiedenen Scripte verwenden, einmal eine Funktion von jquery welche den Scrollbalken ersetzt, die sieht so aus:


```
<script type="text/javascript"><!--
$(function()
{
	$('.scroll-pane').jScrollPane({showArrows:true});
});
			
//--></script>
```

Und eine rotierende Galerie von Mootools, die Funktion sieht so aus: 


```
<script type="text/javascript">
            var obj;
            function startMoorquee() {
                obj = new mooquee($('mooquee1'));
                //cancel on mouse over
                //obj = new mooquee($('mooquee1'), {pauseOnOver: false});
            }
            window.addEvent('domready', startMoorquee);            
</script>
```

Es will einfach nicht zusammen funktionieren.


----------



## rd4eva (11. Februar 2010)

Das geht nicht weil beide per $.... angesprochen werden, wodurch natürlich ein Konflikt entsteht weil z.b. dein Jquery Aufruf in mootools garnicht existiert ...

Mehr oder weniger lange Rede kurze Lösung :

Jquery im noConflict Modus laufen lassen

http://docs.jquery.com/Using_jQuery_with_Other_Libraries


----------



## chmee (11. Februar 2010)

Ich würd mal schauen, ob sich so eine Galerie nicht auch unter jQuery findet. 2x JS-Framework laden ist absolut uneffizient und dazu störanfällig. 

http://sorgalla.com/projects/jcarousel/

mfg chmee


----------



## sugar (11. Februar 2010)

Hab ewig gesucht nach einer Lösung, daher muss ich wohl zwei Frameworks nehmen. Der Tipp von rd4eva ist super, allerdings krieg ich es auch nicht hin. Habe jetzt alle Möglichkeiten durchgespielt.

Bei mir kommt im Header erst der Aufruf nach jQuery und dem dazugehörigen Script. Dann der Aufruf nach Mootools. Dann immer noch im Header habe ich versucht jQuery so umzuschreiben


```
<script type="text/javascript"><!--
jQuery.noConflict();
jQuery(document).ready(function($){
{
	$('.scroll-pane').jScrollPane({showArrows:true});
});
			
//--></script>
```

Und Mootools im Body dann so:

```
<script type="text/javascript">
            var obj;
            function startMoorquee() {
                obj = new mooquee($('mooquee1'));
                //cancel on mouse over
                //obj = new mooquee($('mooquee1'), {pauseOnOver: false});
            }
            window.addEvent('domready', startMoorquee);            
</script>
```

Funktioniert leider nicht.


----------



## chmee (11. Februar 2010)

Wo beide JS-Teile stehen ist herzlich egal, denn beide warten auf ein DOM-Ready. Bei mootools ist es ein direkter event, bei jQuery ist es der .ready() Aufruf.

Ich kann es nur noch einmal unterstreichen, man hat bei 2 so komplexen Frameworks keine Kontrolle über Kreuzwirkungen/Nebenerscheinungen! Ncoh dazu lädt man knapp 100kB Framework, obwohl man es mit einem und ein bisschen mehr Suchen sauberer anstellen kann. Bei so etwas ist unter JS kaum was sicher zu stellen.

Deswegen nochmal die Frage : Welchen Effekt benutzt Du unter mootools, damit ich ihn Dir unter jQuery finden kann? Bitte mal die Links zur Code-Seite nennen..

mfg chmee

p.s.: Hast Du denn Firebug zu laufen oder zeigt Dir IE/FF einen Fehler an?


----------



## sugar (11. Februar 2010)

Danke für deine schnelle Antwort. Ja hört sich blöd an, der Effekt ist eigentlich simpel und ich habe auch jCarousel schon alles durchprobiert mit jQuery aber ich kriegs nicht hin. Hier ein Link zu dem Mootools Script: http://www.developer.ps/moo/mooquee/ 

Ich verwende es ohne Buttons sondern es läuft automatisch. Das funktioniert recht einfach.


----------



## chmee (11. Februar 2010)

Boing, da hätte ich eigentlich sofort drauf kommen können, ein simpler marquee.

Links:
http://jscroller.markusbordihn.de/example/
http://remysharp.com/2008/09/10/the-silky-smooth-marquee/
http://www.givainc.com/labs/marquee_jquery_plugin.htm
http://plugins.jquery.com/project/marquee

mfg chmee


----------



## rd4eva (11. Februar 2010)

Also generell geb ich chmee Recht um es mal für die Nachwelt festzuhalten sag ich trotzdem mal was du falsch gemacht hast.

Die Methode die du verwendet hast ist zwar richtig aber in meinen Augen etwas unglücklich.
Ich würde eher zur  var $j = jQuery.noConflict(); Methode tendieren.

Aber dein eigentlicher Fehler ist eine { zu viel.


----------



## sugar (19. Februar 2010)

Danke rd4eva, damit hat es dann wirklich funktioniert! Natürlich pflichte ich euch bei aber in diesem einen Fall ging es nicht anders, der Kunde wollte unbedingt diesen Effekt.

Jetzt habe ich noch eine andere Frage, jetzt habe ich wirklich nur zwei Effekte mit jQuery und beide funktionieren eigentlich mit "$(document).ready", trotzdem bekomme ich es nicht zum laufen.

Einmal Fisheye Dockmenu über jQuery "interface.js"


```
<script type="text/javascript">
	
	$(document).ready(
		function()
		{
			$('#dock').Fisheye(
				{
					maxWidth: 90,
					items: 'a',
					itemsText: 'span',
					container: '.dock-container',
					itemWidth: 120,
					proximity: 90,
					halign : 'center'
				}
			)
		}
	);

</script>
```

Und ein normaler Slider mit jQuery Tools "jquery.tools.min.js"


```
<script> 
// execute your scripts when the DOM is ready. this is a good habit
$(document).ready(function() {

 
	// initialize scrollable
	$(".scrollable").scrollable({
	 size: 1
	//$("div.scrollable").scrollable();
    });
	
			
});
</script>
```

Lösche ich das eine geht das andere und umgekehrt. Könntet ihr mir noch mal helfen?


----------



## Sven Mintel (21. Februar 2010)

Moin,

diese beiden Sachen funktionieren ansich auch zusammen.

Möglicherweise existiert bei deiner Anwendung eine Wechselwirkung zwischen beiden Sachen, welche einen Fehler verursacht...anhand geposteten Codes ist dies jedoch nicht erkennbar.


----------



## sugar (21. Februar 2010)

Danke für deine Antwort. Ein Tipp wie ich das rausfinden kann?


----------



## Sven Mintel (21. Februar 2010)

Als 1. würde ich einen Blick in die Fehlerkonsole werfen, vielleicht liefert diese einen Hinweis.


----------



## sugar (21. Februar 2010)

Ich bekomme tatsächlich die Fehlermeldung: 

Meldung: Das Objekt unterstützt diese Eigenschaft oder Methode nicht.
Zeile: 47
Zeichen: 4
Code: 0

Dort steht folgendes: $('#dock').Fisheye(

Leider sagt mir das nicht so viel. Welches Objekt ist gemeint? Kann mir jemand helfen?


----------



## chmee (21. Februar 2010)

Nun, entweder hat #dock nicht die Elemente, oder sie sind falsch gesetzt, oder Fisheye() kann unter welchen Umständen nicht geladen werden, ergo gibt es diese Methode/Eigenschaft Fisheye() nicht.

Für alle Anderen : interface.js - Hier zu finden

mfg chmee


----------



## sugar (21. Februar 2010)

Danke für die Antwort. 

Ich habe jetzt rausgefunden, dass ich wohl die JavaScript Dateien in der falschen Reihenfolge eingefügt hatte. Jetzt ist es so

```
<link href="style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery.js"></script>
<script src="http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js"></script>
<script type="text/javascript" src="js/interface.js"></script>
<script> 
// execute your scripts when the DOM is ready. this is a good habit
$(function() {
	// initialize scrollable
	$(".scrollable").scrollable({
	 size: 1
	//$("div.scrollable").scrollable();
    });	
});
</script>
</head>
```
Weiter unten im Body kommt dann das Fisheye Dock Menü. Das geht, zwar etwas holprig, in allen Browsern außer IE 8. Hier krieg ich die Fehlermeldung:

Meldung: 'get(...).style' ist Null oder kein Objekt
Zeile: 31
Zeichen: 15990
Code: 0
URI: http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js


Immer wenn ich einen Slider Button drücke.


----------



## Sven Mintel (21. Februar 2010)

Mangels hellseherischer Fähigkeiten kann ich dir da nicht weiterhelfen.

Vielleicht kann es ja jemand anders, ohne die Seite dazu zu Sehen.


----------



## sugar (22. Februar 2010)

Ja klar sorry! 

Ich habe die Seite mal zum testen hier hochgeladen. 

Das Problem besteht wie gesagt im IE.

Wäre super wenn jemand eine Idee hätte.


----------



## Sven Mintel (22. Februar 2010)

Also im IE bekomme ich die Fehlermeldung auch.

Lösung hab ich keine Parat, nur Vermutungen.

jquery.tools.js beinhaltet ja jQuery 1.3.2
interface.js basiert allerdings auf jQuery 1.1.2 

Ich befürchte, dass es daran liegt.

Lösungsvorschlag:
Auf eine neue Version von interface.js warten(angeblich wird daran gearbeitet) und derweil für den IE eines der beiden wegzulassen.


----------



## chmee (23. Februar 2010)

Oder downgraden auf eine ältere jQuery-Version. Ich glaube, mit der Version 1.3 wurde einiges geändert. (Wobei schon 1.42 existiert..)

http://docs.jquery.com/Downloading_jQuery

mfg chmee


----------



## sugar (23. Februar 2010)

Hm daran hatte ich noch nicht gedacht. Ich habe mal jquery Tools ohne jquery eingebunden (siehe Link oben) und extra die jquery lib von Google verwendet. Das geht auch, sogar mit der Version 1.4.2 geht Interface  und die Scrollleiste, nur eben nicht in IE. Das ist doch komisch oder?


----------

