2008-09-08 9 views
3

JQuery hat ein großes Sprachkonstrukt, das wie folgt aussieht:Benutzerdefinierte Funktionen an DOM-Events im Prototyp binden?

$(document).ready(function() { 
    $("a").click(function() { 
     alert("Hello world!"); 
    }); 
}); 

Wie Sie dies vorstellen können, sobald das Dokument, eine benutzerdefinierte Funktion zum OnClick-Ereignisse aller eineine Tags bindet geladen wird.

Die Frage ist, wie kann ich das gleiche Verhalten in Prototype erreichen?

Antwort

8

Prototype 1.6 liefert das "dom:loaded" Ereignis auf dem Dokument:

document.observe("dom:loaded", function() { 
    $$('a').each(function(elem) { 
     elem.observe("click", function() { alert("Hello World"); }); 
    }); 
}); 

Ich benutze auch den each Iterator auf dem Array von $$() zurückgegeben.

+0

Schön :) Scheint Prototype hat einige neue Tricks gelernt, seit ich es zuletzt benutzt habe! –

1
Event.observe(window, 'load', function() { 
    Event.observe(element, 'click', function() { 
     alert("Hello World!"); 
    }); 
}); 

Natürlich müssen Sie "wählen Sie" die Elemente zuerst in Prototype.

+0

Können Sie näher auf "die Elemente zuerst auswählen"? Darf ich das machen? 'Event.observe ($$ ('a'), 'click', Funktion() {alert ('Hallo Welt!');});' –

+0

@Mark Biek 'Event.on (Dokument, 'click', ' a.greater_class [rel] ', Funktion (event, elt) {alert ("Hallo" + elt.readAttribute (' rel ')); event.stop();}); ' –

+0

FYI das ist die Syntax von Prototyp 1.7, die ist immer noch in der Beta – robjmills

1

Dieser Artikel gibt einen ziemlich guten Überblick über die Ereignisbibliothek von Prototype. Ich denke, im Vergleich zu jQuery ist dies eine Steinzeit-API. :)

http://alternateidea.com/blog/articles/2006/2/8/working-with-events-in-prototype

+1

@Erlend: Das ist, weil der verknüpfte Artikel zwei Jahre alt ist. Die API hat sich seither ziemlich weiterentwickelt. ;-) – savetheclocktower

+0

Ich, so weit, bevorzuge auch eine Menge Dinge über Jquery. Aber ich habe eine große Prototyp-Code-Basis, mit der ich arbeiten kann. Wenn in Rom ... –

4
$(document).observe('dom:loaded', function() { 
    $$('a').invoke('observe', 'click', function() { 
     alert('Hello world!'); 
    }); 
}); 
Verwandte Themen