php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.10.2010, 18:45  
Erfahrener Benutzer
 
Registriert seit: 29.08.2008
Beiträge: 777
halskrause wird schon bald berühmt werden
Standard [Erledigt] jQuery setTimeout und "this"...

Hi. Ich habe ein Problem mit jQuery. Undzwar verstehe ich nicht wieso folg. nicht funktioniert.

PHP-Code:
$('.album').mouseenter(function(){
    
setTimeout(function(){ $('this').children('.overlay,.albumDel').fadeIn(400);}, 1000);                          
 }) 
Da ich mehrere 'alben'-Klassen habe, arbeite ich hier mit 'this'. Doch es klappt nicht. 'this' scheint den Faden zu verlieren, weil es in einer zusätzlichen Funktion steckt (vermute ich mal). Wenn ich 'this' mit '.alben' ersetze, faden alle ein... Jedoch will nur den den aktuellen overlay zeitversetzt einblenden.

Weiß einer, wie ich 'setTimeout' und 'this' am besten zusammen einsetzen kann?
halskrause ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.10.2010, 20:56  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von halskrause Beitrag anzeigen
'this' scheint den Faden zu verlieren, weil es in einer zusätzlichen Funktion steckt (vermute ich mal).
this verliert nicht „den Faden“, sondern this ist in dem Kontext, in dem deine Funktion per setTimeout ausgeführt wird, schlicht und einfach window.

Zitat:
Weiß einer, wie ich 'setTimeout' und 'this' am besten zusammen einsetzen kann?
Closures.
http://aktuell.de.selfhtml.org/artik...tion/#closures
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 25.10.2010, 20:57  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Das liegt daran, dass eine Funktion in Javascript lose angekoppelt ist, salopp gesprochen. In dem Fall von setTimeout ist der scope von this in dem Fall window. Um den Scope zu behalten, hast du jetzt viele Möglichkeiten.

The 'this' problem

Zitat:
Code executed by setTimeout() is run in a separate execution context to the function from which it was called. As a consequence, the this keyword for the called function will be set to the window (or global) object, it will not be the same as the this value for the function that called setTimeout. This issue is explained in more detail in the JavaScript reference.
https://developer.mozilla.org/en/Jav...Method_binding
https://developer.mozilla.org/en/Jav.../Function/bind
Und für alle anderen Browser:

PHP-Code:

if (typeof Function.prototype.bind !== 'function') {
    Function.
prototype.bind = function (context) {
        var 
args = Array.prototype.slice.call(arguments1),
            
this;
        return function () {
            
args.push.apply(argsarguments);
            return 
f.apply(contextargs);
        };
    };


edit: NOOOOO, ich war zu lahm..
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 25.10.2010, 21:00  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Wie schon genannt: Closures.
PHP-Code:
var that this;
setTimeout(function() {
    
console.log(that);
}, 
1234); 
Im Übrigen gehört this nicht in Hochkommata. Das ist eine Referenz auf den aktuellen Kontext, kein String
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 26.10.2010, 11:31  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

halskrause: Nach soo vielen Postings müsste es doch eigentlich möglich sein zu debuggen oder? Einfach mal Variablen ausgeben, notfalls ganz altmodisch mit alert() - besser aber wie schon von Manko10 geschrieben mit console.log().
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 27.10.2010, 19:21  
Erfahrener Benutzer
 
Registriert seit: 29.08.2008
Beiträge: 777
halskrause wird schon bald berühmt werden
Standard

Danke für eure Hilfe.

@Chriz: Ich arbeite mich erst gerade in JavaScript ein. Ich war so klug und hatte mit jQuery begonnen.
halskrause ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bin noch ein Anfänger mit jquery bitte um hilfe bomber007 JavaScript, Ajax und mehr 4 19.08.2010 23:34
[Erledigt] jQuery Slider - In eine Richtung sperren Trainmaster JavaScript, Ajax und mehr 2 08.08.2010 16:06
[Erledigt] Statistik mit jQuery DJ_RhoxxZ JavaScript, Ajax und mehr 6 25.07.2010 17:47
jquery: dialogbox funktioniert nicht Dreamwatcher JavaScript, Ajax und mehr 16 22.07.2010 18:22
jQuery findet Element nicht ByStones JavaScript, Ajax und mehr 8 11.06.2010 14:03
jQuery Plug scroll to - wie einbetten? mxxxx JavaScript, Ajax und mehr 5 24.04.2010 18:12
[Erledigt] Jquery Selektoren chunky JavaScript, Ajax und mehr 5 14.02.2010 11:14
jQuery Ablauf halskrause JavaScript, Ajax und mehr 8 24.11.2009 13:14
[Erledigt] [Erledigt] jQuery Endlos Scrolling Umlaute kn0wledge JavaScript, Ajax und mehr 0 18.10.2009 19:29
jQuery Dokus/Tuts MaiKaY Off-Topic Diskussionen 9 25.09.2009 16:52
Umsetzung von parentNode in jQuery nikosch JavaScript, Ajax und mehr 8 03.08.2009 21:25
[Erledigt] jQuery Dateien nachladen Phoscur JavaScript, Ajax und mehr 7 14.03.2009 13:44
jQuery Plugin - so richtig? stayInside JavaScript, Ajax und mehr 5 23.02.2009 12:34
For Schleife mit jQuery phpbeginner JavaScript, Ajax und mehr 3 22.11.2008 22:35
problem mit setTimeout HTML, Usability und Barrierefreiheit 2 10.05.2006 13:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jquery settimeout, settimeout jquery, jquery timeout, jquery settimeout function, jquery set timeout, jquery settimeout this, jquery timeout function, javascript settimeout jquery, jquery ajax settimeout, settimeout( jquery funktioniert nicht, wieso funktioniert settimeout nicht mit jquery?, jquery overlay timeout, jquery for schleife zeitversetzt, jquery ajax zeitversetzt, jquery settimeout on private member, jquery timeout funktioniert nicht, settimeout, linux settimer, jquery timeout overlay, jquery settimer

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum