Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.javascript > #4763
| Path | csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail |
|---|---|
| From | Robert Berghaus <robert.berghaus@gmx.de> |
| Newsgroups | de.comp.lang.javascript |
| Subject | Re: jQuery Wechsel von live() nach click() |
| Date | Sun, 21 Aug 2016 12:31:12 +0200 |
| Lines | 86 |
| Message-ID | <e1te7hFp97oU1@mid.individual.net> (permalink) |
| References | <e1re7iFb2buU1@mid.individual.net> <npa41p$o8r$2@solani.org> <4025524.fQgX0d2UCM@PointedEars.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8 |
| Content-Transfer-Encoding | 8bit |
| X-Trace | individual.net hmMIsz5LVogWrTEJZYgiiQKKbS53GqQhXFw0KN1qM89Myom/Rt |
| Cancel-Lock | sha1:nAa2Z9msfPrquOYt5uQGUWppWsY= |
| User-Agent | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.1.0 |
| In-Reply-To | <4025524.fQgX0d2UCM@PointedEars.de> |
| Xref | csiph.com de.comp.lang.javascript:4763 |
Show key headers only | View raw
Am 21.08.2016 um 02:32 schrieb Thomas 'PointedEars' Lahn:
> Christoph M. Becker wrote:
>
>> Am 20.08.2016 um 18:18 schrieb Robert Berghaus:
>>> Ich benutzte bisher JQuery 1.4.2 und initialisierte folgendermaßen:
>>> $( function() {
>>> $( ".Jahr" ).live( "click", function( e ) {
>>> stopDefault( e );
>>> JahrAusblenden( e );
>>> } );
>>> } );
>>>
>>> Mit 2.2.4 funktionierte das nicht mehr (.live nicht bekannt), weshalb
>>> ich das so machte:
>>> $( function() {
>>> $( ".Jahr" ).click( function( e ) {
>>> stopDefault( e );
>>> JahrAusblenden( e );
>>> } );
>>> } );
>>>
>>> Da ich den Inhalt der Seite aber mit AJAX lade, funktioniert das so
>>> nicht; mit .live ging es auch mit AJAX.
>>>
>>> Ich muß also wohl nach dem Laden der Seite den gesamten Baum durchgehen,
>>> und die Funktion binden, oder geht das einfacher?
>>> Damit kann ich aber auch die Initialisierung weglassen, oder ist das
>>> falsch?
>>>
>>> Gibt es vielleicht einen einfacheren Weg, live nach click?
>>
>> Funktioniert evtl. $.on()?
>
> Ja, aber es löst das Problem nicht. .on("click", …) ist äquivalent zu
> .click(…) und sollte Letzterem vorgezogen werden, da es zu einem
> einheitlichen Codestil beiträgt, der es ermöglicht, Event-Listener
besser zu
> finden.
>
Das Argument zu einheitlichem Codestil leuchtet mir ein.
> Das Problem ist aber anscheinend, dass Elemente mit der Klasse “Jahr”
> dynamisch hinzugefügt werden und dann auf diesen noch kein Event-Listener
> registriert ist.
>
So ist es. Ich werde also nach dem Einfügen des Inhaltes den
Event-Listener registrieren. Das Durchgehen vom DOM kann ich ja an
jQuery delegieren. Das dürfte dann so aussehen:
$( ".Jahr" ).on( "click", function( e ) {
stopDefault( e );
JahrAusblenden( e );
} );
> Die richtige Methode ist ausserdem nicht stopDefault(), sondern
> e.preventDefault() [siehe ebenfalls die API-Dokumentation; es handelt
sich
> bei “e” um die Referenz auf ein *jQuery*-Event-Objekt, daher hat es
auch die
> preventDefault-Methode, wenn die DOM-Implementierung sie für
Event-Objekte
> nicht bereitstellt – der übliche Ansatz für Event-Listener-Wrapper]).
> [Ausser das benutzerdefinierte stopDefault() macht mehr als das jQuery-
> e.preventDefault().]
>
Die Funktion macht mehr:
function stopDefault( evt ) {
if ( evt && evt.preventDefault ) {
evt.preventDefault();
} else if ( window.event && window.event.returnValue ) {
window.event.returnValue = false;
}
} // function stopDefault( evt ) {
Das hatte ich entweder in einem jQuery Buch oder in der dicken
JavaScript 'Bibel' gefunden. Da es mir universeller erschien, habe ich
es übernommen.
Vielen Dank für die Gedanken und schönen Sonntag
Robert
Back to de.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
jQuery Wechsel von live() nach click() Robert Berghaus <Robert.Berghaus@gmx.de> - 2016-08-20 18:18 +0200
Re: jQuery Wechsel von live() nach click() "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-08-20 19:29 +0200
Re: jQuery Wechsel von live() nach click() Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-21 02:32 +0200
Re: jQuery Wechsel von live() nach click() "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-08-21 11:59 +0200
Re: jQuery Wechsel von live() nach click() Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-21 13:06 +0200
Re: jQuery Wechsel von live() nach click() Robert Berghaus <robert.berghaus@gmx.de> - 2016-08-21 12:31 +0200
Re: jQuery Wechsel von live() nach click() Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-21 13:04 +0200
Re: jQuery Wechsel von live() nach click() Robert Berghaus <robert.berghaus@gmx.de> - 2016-08-21 13:28 +0200
Re: jQuery Wechsel von live() nach click() Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-21 13:34 +0200
Re: jQuery Wechsel von live() nach click() Robert Berghaus <Robert.Berghaus@gmx.de> - 2016-08-22 12:28 +0200
Re: jQuery Wechsel von live() nach click() Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-22 19:15 +0200
OT: Thunderbird Rewrap (was: jQuery Wechsel von live() nach click()) "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-08-21 15:05 +0200
Re: jQuery Wechsel von live() nach click() Robert Berghaus <Robert.Berghaus@gmx.de> - 2016-08-22 12:17 +0200
Re: jQuery Wechsel von live() nach click() "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-08-22 15:27 +0200
Re: jQuery Wechsel von live() nach click() Robert Berghaus <Robert.Berghaus@gmx.de> - 2016-08-22 16:27 +0200
Re: jQuery Wechsel von live() nach click() "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-08-22 17:44 +0200
Re: jQuery Wechsel von live() nach click() Robert Berghaus <Robert.Berghaus@gmx.de> - 2016-08-25 12:44 +0200
Re: jQuery Wechsel von live() nach click() Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-25 23:45 +0200
Re: jQuery Wechsel von live() nach click() Robert Berghaus <Robert.Berghaus@gmx.de> - 2016-08-26 11:25 +0200
Re: jQuery Wechsel von live() nach click() Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-26 21:19 +0200
csiph-web