JavaScript Sammelthread: JS Frameworks

So, wir beginnen jetzt einfach mal (wie ice-breaker so schön sagt) Äpfel mit Birnen zu vergleichen und streiten drüber, welches Framework denn am besten ist, ohne Gründe dafür anzugeben:ugly:

jQuery8)
 
jQuery is sehr schoen fuer kleine, schnelle, eyecandy funktionalitaet, wenn man mehr will muss man aber sehr schnell sehr tief in den innereien rumspielen.

Prototype is ganz lustig, und bietet sehr viel funktionalitaet benoetigt aber wesentlich mehr einarbeitungszeit.
 
Ich finde (habe es aber noch nie benutzt) in jQuery die DOM-Geschichten sehen sehr nice aus, vermisse dann aber den Rest, was andere Libraries bieten.
Objektorientierung und dann die vielen netten Funktionen (wie in Prototype oder Mootools) für Arrays, Strings, Cookies usw.

Beides verbunden in einem Framework wäre perfekt :biggrin:
 
jQuery is sehr schoen fuer kleine, schnelle, eyecandy funktionalitaet, wenn man mehr will muss man aber sehr schnell sehr tief in den innereien rumspielen.

Finde ich gar nicht. Es dauert zwar ein wenig, bis man tiefer gehende Möglichkeiten entdeckt, aber sie sind trotzdem ziemlich einfach zu realisieren

Prototype is ganz lustig, und bietet sehr viel funktionalitaet benoetigt aber wesentlich mehr einarbeitungszeit.

Ich habe Prototype kurzweilig verwendet, wegen Auto-Vervollständigung, aber nur weil ich jQuery damals noch nicht gekannt habe.

jQuery finde ich sehr ausgereift. Es bietet eigentlich alle Möglichkeiten die man sich wünscht (sofern man auch mal was selber machen will) und falls doch nicht, nutzt man eben das Plugin-System, das wunderbar funktioniert.

Bis jetzt hab ich für jQuery zwar erst ein Plugin geschrieben, aber das hat ziemlich reibungslos funktioniert.

Von jQuery v1.3.3 erhoffe ich mir eine Unterstützung der neuen Funktionen von Javascript, die direkt mitgeliefert werden, was in einem deutlichen Performanceschub resultieren sollte.

Alles in allem bleibe ich vorerst bei jQuery. Die Möglichkeiten die man damit hat, sind für mich zumindest noch vollkommen ausreichend und dank der Community findet man für nicht vorhandene Funktionen ziemlich schnell ein Plugin.

Die DOM-Manipulation funktioniert mit jQuery wunderbar, was die Möglichkeiten noch erweitert ;)

@ice-breaker: Um welche Funktionalitäten geht es dir da genau?
 
@ice-breaker: Um welche Funktionalitäten geht es dir da genau?

wirf mal einen Blick in die Prototype-Doku, was es da noch alles an Funktionalitäten gibt. Es auf etwas spezielles herausbrechen kann ich gerade nicht, ist von Einsatz zu Einsatz unterschiedlich. Aber ich brauche öfters mal diese Funktionen, die in jQuery nicht drin sind, das sind dann solche Sachen wo es über ein wenig DOM anpassen hinausgeht.

als bestes Beispiel: Class.create()
 
Objektorientierung und dann die vielen netten Funktionen (wie in Prototype oder Mootools) für Arrays, Strings, Cookies usw.

Beides verbunden in einem Framework wäre perfekt :biggrin:

jQuery ist eben schlank und auf das Wesentliche (was für die meisten Zwecke ausreicht) beschränkt. Für Cookie-Support gibt es beispielsweise ein nettes Plugin.

Ich musste während meines Ferienjobs mit MooTools arbeiten und fand es im Vergleich zu jQuery einfach umständlich. Das lag zum Teil auch an der nicht wirklich überzeugenden Dokumentation...

Können MooTools und Prototype eigentlich native Event-Delegation?

Greetz

paddya
 
jQuery ist eben schlank und auf das Wesentliche (was für die meisten Zwecke ausreicht) beschränkt. Für Cookie-Support gibt es beispielsweise ein nettes Plugin.
jup :-(
Die Grenzen des wesentlichen sind leider aber schnell erreicht, wenn mal komplexere Logik in Js umgesetzt wird und nicht einfach nur etwas per AJAX in nen Div nachgeladen wird.

Ich musste während meines Ferienjobs mit MooTools arbeiten und fand es im Vergleich zu jQuery einfach umständlich. Das lag zum Teil auch an der nicht wirklich überzeugenden Dokumentation...
MooTools/Prototype sind eben nicht einfach auf das nur-DOM-anpassen ausgelegt, aber die Doku ist doch ausreichend, ist doch alles erklärt :-?

Können MooTools und Prototype eigentlich native Event-Delegation?
soll in Mootools 1.3 rein, wobei ich es ehrlich gesagt nicht brauche :biggrin:
 
MooTools/Prototype sind eben nicht einfach auf das nur-DOM-anpassen ausgelegt, aber die Doku ist doch ausreichend, ist doch alles erklärt :-?

Das Problem ist, das zu finden, was man sucht ;)

Was mich auch noch geärgert hat, war der fehlende Support für komplexere :not()-Selektoren. jQuery unterstützt sowas zum Beispiel:

PHP:
#content div:not(#pagetitle)

MooTools versagt da und liefert einfach nur ein leeres Ergebnis.

Event Delegation wirst du noch zu schätzen lernen, wenn du mal ein Projekt hast, wo tausende EventHandler pro Seite definiert werden müssen und dein Browser einfach nur lahm wird. Speziell der IE < 8 ist da so ein Fall für sich...

Greetz

paddya
 
Was mich auch noch geärgert hat, war der fehlende Support für komplexere :not()-Selektoren. jQuery unterstützt sowas zum Beispiel:

PHP:
#content div:not(#pagetitle)
CSS3-Expressions, hmm, nuja, kann man sehen wie man will.
Da arbeiten die Browserhersteller ja noch dran, also wirds auch wieder nur emuliert lauffähig sein.

Event Delegation wirst du noch zu schätzen lernen, wenn du mal ein Projekt hast, wo tausende EventHandler pro Seite definiert werden müssen und dein Browser einfach nur lahm wird. Speziell der IE < 8 ist da so ein Fall für sich...
tausende pro Seite werden mit Webapps aber ziemlich schwer zu erreichen sein, das sind doch dann eh alles nur Feature-Demos oder?
 
tausende pro Seite werden mit Webapps aber ziemlich schwer zu erreichen sein, das sind doch dann eh alles nur Feature-Demos oder?

Wenn du irgendwas auflistest (z.B. Feeds, Beispiel Google Reader) und dazu dann mehrere Aktionsmöglichkeiten (als (un)gelesen markieren, anderen empfehlen, an Web2.0-Services xyz senden, usw. usf.), die alle per JavaScript-Handler ausgeführt werden sollen und du zudem noch Feed-Items beim Scrollen nachlädst, dann wünsch ich dir viel Spaß ohne Event Delegation ;)
 
Diese Sammelthreads schlafen immer so schnell ein:ugly:

@Snyke: Verlink doch mal die Frameworks im ersten Post.

Ich bin gespannt, ob die jQuery-Conference gestreamt, oder wenigstens aufgenommen wird, sind ein paar interessante Themen dabei.:-?
 
Hi @all;

also ich hoffe ich bin hier richtig mit einer konkreten jQuery Frage.

Ich habe ein menü was wie folgt aussieht:
HTML:
<ul class="navigation">
  <li><a class="menu_headline" href="/admin/config">Config Verwaltung</a> 
    <ul class="container_pages">
      <li><a href="/admin/config/edit">edit</a></li>

      <li><a href="/admin/config/new">new</a></li>
      <li><a href="/admin/config/delete">delete</a></li>
    </ul>
  </li>
  <li><a class="menu_headline" href="/admin/template">Template Verwaltung</a> 
    <ul class="container_pages">
      <li><a href="/admin/template/edit">edit</a></li>

      <li><a href="/admin/template/new">new</a></li>
      <li><a href="/admin/template/delete">delete</a></li>
    </ul>
  </li>
</ul>
Und nun folgendes jQuery Code (mal mit PHP Tags formatiert):
PHP:
$(document).ready(function() {
	// handle menu Toggle view
	$('.menu_headline').click(
			function (event) {
				$(this).next($('.container_pages').slideToggle("slow"));
				return false;
			}
	);
});

Der macht mir so nun allerdings jeden unterpunkt auf, egal worauf ich klicke, aber ich brauche es so das der mir nur den jeweiligen unterpunkt aufmacht.
Mit Google habe ich nix genaueres gefunden und die Docu von jQuery schnalle ich anscheinend nicht, das sollte ja nicht so schwer sein, aber ich bekomm das trotzdem nicht hin, hoffe einer von euch kann mir nen guten Tip geben.
 
Die Zeile ist falsch:
PHP:
$(this).next($('.container_pages').slideToggle("slow"));
probiers mal so:
PHP:
$(this).next(".container_pages").slideToggle("slow");
 
Die Zeile ist falsch:
....

Ja wahnsinn, so einfach kann es sein. Danke dir das funzt perfekt, wenn ich das richtig verstehe kann ich damit auch die Childs in einem ganz anderen element anzeigen lassen, ist das richtig?

*edit
Gleich noch ne Frage hinterher, wie kann ich mir jQuery zwei elementinhalte vergleichen? Mein Code schaut bissher so aus:
PHP:
$(document).ready(function() {
	// handle menu Toggle view
	$('.menu_headline').click(
			function (event) {
// betroffene Zeile
				if($('#current_menuchilds').contents() == $(this).next('.container_pages')) {
					$('#current_menuchilds').slideUp();
					return false;
				}
				if($('#current_menuchilds') != "") {
					$('#current_menuchilds').fadeOut();
				}
				$('#current_menuchilds').wrapInner($(this).next('.container_pages'));
				$('#current_menuchilds').fadeIn("slow");
				//$(this).next('.container_pages').slideToggle("slow");
				return false;
			}
	);
});

$(document).ready(function() {
	// handle the teaser too show flashMessages
	$('#teaser').slideToggle("slow").animate({opacity: 1.0}, 10000).slideToggle("slow");
});
Damit möchte ich bezwecken das ich auf den selben Menü Punkt nochmal klicken kann um den zu schließen.
 
Zuletzt bearbeitet:
So ich poste jetzt nochmal sonst würde mein letzter Post zu lang werden. @theHacker merge es wenn Du anderer Meinung bist.

So ich habe es über umwege selber lösen können mittels:
PHP:
$(document).ready(
function() {
	// handle menu Toggle view
	$('.menu_headline').click(
			function (event) {
				if($(this).next('.container_pages').hasClass('.displays')) {
					$(this).next('.container_pages').removeClass('displays');
					$('#current_menuchilds').slideUp();
					return false;
				}
				if($('#current_menuchilds') != "") {
					$('#current_menuchilds').fadeOut();
				}
				// remove first all other classes
				$('.container_pages').removeClass('displays');
				$(this).next('.container_pages').addClass('displays');
				$('#current_menuchilds').wrapInner($(this).next('.container_pages')).fadeIn("slow");
				//$(this).next('.container_pages').slideToggle("slow");
				return false;
			}
	);

});

Jetzt würde ich nur noch gern wissen ob man dieses ganze Stückchen Code nicht auch kürzer schreiben kann, bzw. ob man das nicht einfacher handhaben kann.

*edit

Und ich habe gerade festgestellt das das quatsch ist, da beim neuladen einer Seite aus dem Menü alles weg ist :-?, aber vielleicht habt ihr ja dazu nen Tip für mich.
 
Zuletzt bearbeitet:
jQuery-UI hat auf der Site einen kleinen Beispielcode, um sowas ein und auszufaden, weiß nicht, ob das auf dein Problem jetzt passt:

PHP:
jQuery(document).ready(function(){
	$('.accordion .head').click(function() {
		$(this).next().toggle('slow');
		return false;
	}).next().hide();
});