jQuery custom event

  • Themenstarter Themenstarter Netzwerkidi
  • Beginndatum Beginndatum
N

Netzwerkidi

Hallo,

hat jemand Ahnung, wie man in jQuery Custom Events programmiert?

Ich habe mir das durchgelesen bei jQuery (http://api.jquery.com/trigger/), aber irgendwie scheine ich zu blöd dafür zu sein.

Das habe ich:

http://jsfiddle.net/82NU3/

Ziel: wenn, der Container sichtbar ist (wird im Test mit dem Timeout erzeugt), soll die Aktion ausgelöst werden und der Text darüber geändert werden.


LG
Idi
 
Hi
Ein jQuery Costum Event musst du selbst triggern. Was du da also versuchst zu machen wird so nicht funktionieren.
Hier hat es ein Beispiel:
http://yoan.dosimple.ch/blog/2008/04/30/


Was du vorhast sollte aber grundsätzlich möglich sein. Selbst habe ich noch in die Richtung gemacht, aber schau dir das mal an:
http://stackoverflow.com/questions/1397251/event-detect-when-css-property-changed-using-jquery
Javascript:
document.documentElement.addEventListener('DOMAttrModified', function(e){
  if (e.attrName === 'style') {
    console.log('prevValue: ' + e.prevValue, 'newValue: ' + e.newValue);
  }
}, false);
Mit einem EventListener auf DOMAttrModified fängst du alle Änderungen die an einem DOM Element gemacht werden ab. Mit e.attrName findest du heraus welches Attribut sich geändert hat. Grundsätzlich können sich zwei Attribute ändern die visible des Objekts ändern können: "class" und "style".
DOMAttrModified funktioniert aber laut google nicht im IE, d.h. da brauchst du wieder einen Workaround.
Wenn du das also wirklich brauchst würde ich mich in die Richtung mal schlau machen.

Allerdings brauchst du das ja nur, wenn fremder Code dein Objekt ein/ausblendet. Für den eigenen Code würde ich es nicht so machen.
 
Hej jeipack,

die Schweizer Seite hatte ich auch schon entdeckt, bin aber mal erst hängengeblieben.

Ich habe sie mir jetzt noch mal genauer angeschaut, und es sieht so aus, als wäre der Groschen gefallen.

http://jsfiddle.net/xpBwH/

Danke Dir!!

LG
Idi
 
Zuletzt bearbeitet von einem Moderator:
"Ja gut, aber wie oder wodurch wird dieser "hello"-Event ausgelöst, was ist ein "hello"-Event? Irgendwie kapiere ich es einfach nicht."
Wie gesagt, solche Custom Events müssen selbst getriggert werden. Im hello-Beispiel also:
$("*").trigger("hello");
Wobei du in $("*") jeden Selektor verwenden kannst, da er den hello-Event an alle DOM Elemente gehängt hat.

jQuery wird dir nicht helfen einen Trigger auszulösen wenn sich eine css Eigenschaft ändert.
Entweder gehst du den Weg über DOMAttrModified.

Oder du baust dir einen Loop und checkst all x Milisec ob das Objekt noch visible ist und falls sich was geändert hat rufst du eine Funktion auf (Oder triggerst einen Custom Event). Das würde dann in etwa so aussehen:
http://jsfiddle.net/vGXHu/

Ist nicht gerade sauber, da nicht mehr mit Events gearbeitet wird.
 

Neue Beiträge

Zurück