mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 17:39 Benutzername: Passwort: Auto-Login

Thema: [jQuery] kapseln vom 11.08.2010


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [jQuery] kapseln
Autor Nachricht
zweitaccount
Threadersteller

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 11.08.2010 16:33
Titel

[jQuery] kapseln

Antworten mit Zitat Zum Seitenanfang

Hi, mal eine Frage, wie greife (beispielsweise bei jQuery)
ich innerhalb einer Funktion auf das 'Eltern-Objekt' zu.
Momentan mache ich das immer über z.B. var $this = this,
geht ja auch - aber ginge das nicht einfacher/eleganter?

http://jsfiddle.net/3nNef/

Code:
<p class="dummy">1: </p>
<p class="dummy">2: </p>
<p class="dummy">3: </p>
<p class="dummy">4: </p>
<p class="dummy">5: </p>
<p class="dummy">6: </p>
<script type="text/javascript">
var Obj = {
   variable: 'beispiel',
   init:function(){
      this.dummys = $('.dummy');
   },
   testFnc:function(){
      var $this = this;
      this.dummys.each(function(index,el){
         $(el).append($this.variable);
      });
   }
}
$(function(){
  Obj.init();
  Obj.testFnc();
});


* Keine Ahnung... *
  View user's profile Private Nachricht senden
Kash

Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht: Männlich
Verfasst Mi 11.08.2010 16:39
Titel

Antworten mit Zitat Zum Seitenanfang

.parent(selector) , .parents(selector) , .closest(selector)
  View user's profile Private Nachricht senden
Anzeige
Anzeige
zweitaccount
Threadersteller

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 11.08.2010 16:59
Titel

Antworten mit Zitat Zum Seitenanfang

Danke, aber nö ich meinte jetzt nicht Dom-Elemente und
so Zeugs sondern, das Objekt (in dem Fall 'Obj') selbst.
Habs mal als Kommentar reingeschrieben was ich mein:

Code:
var Obj = {
   variable: 'beispiel',
   init:function(){
      this.dummys = $('.dummy');
   },
   testFnc:function(){
      var $this = this;
      this.dummys.each(function(index,el){
         // $(el).append(this.variable);
         // geht ja nicht, weil hier this der paragraph ist.

         $(el).append($this.variable);
         // ginge hier über z.B. $this weil vorher gekapselt - unschön irgendwie

         $(el).append(Obj.variable);
         // geht ja auch, nur will ich da keinen festen Namen drinstehen haben.

         // wie kann ich sonst noch auf das Objekt 'Obj' zugreifen?.
      });
   }
}


Bringt mich .bind() irgendwie weiter? Wenn ja wie?
  View user's profile Private Nachricht senden
sahnemuh

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Mi 11.08.2010 17:37
Titel

Antworten mit Zitat Zum Seitenanfang

http://api.jquery.com/jQuery.proxy/
  View user's profile Private Nachricht senden
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 11.08.2010 17:47
Titel

Antworten mit Zitat Zum Seitenanfang

Nativ kannste den Scope via Function.call() bzw. Function.apply() zuweisen.

Bei asynchronen Aufrufen funktioniert das klassischerweise nicht. Da jQuery im Grunde großer Designmist ist, wurde das immer ein bisschen stiefmütterlich behandelt. Wo andere Bibliotheken es in so gut wie jeder Funktion, die einen Callback erwartet, ermöglichen, eine Objektreferenz mitzugeben, macht jQuery das nicht überall. Allerdings ist bspw. ein aufruf wie

$([]).each(function() {}, this);

möglich, wenn ich mich recht entsinne.
  View user's profile Private Nachricht senden
zweitaccount
Threadersteller

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 12.08.2010 21:42
Titel

Antworten mit Zitat Zum Seitenanfang

Danke, bacon. Ein angehängtes {},this) versuchte ich auch
schon vergeblich. Habs aber nicht geschafft das irgendwie
'anzusprechen'. Aber mei, dann bleibts halt beim var $this = this
Umweg.

Obwohl ich mich langsam generell frage ob grundsätzlich als
'Sockel' für umfangreichere JavaScript-Geschichten eine anonyme
Funktion nicht sowieso einfacher zu händeln wäre (zudem man
dann auch noch so pseudo-private Variablen setzen kann). Aber
k.A. was dieser Weg dann wieder für Nachteile mit sich bringt.
  View user's profile Private Nachricht senden
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Fr 13.08.2010 09:19
Titel

Antworten mit Zitat Zum Seitenanfang

zweitaccount hat geschrieben:
Danke, bacon. Ein angehängtes {},this) versuchte ich auch
schon vergeblich. Habs aber nicht geschafft das irgendwie
'anzusprechen'. Aber mei, dann bleibts halt beim var $this = this
Umweg.

Obwohl ich mich langsam generell frage ob grundsätzlich als
'Sockel' für umfangreichere JavaScript-Geschichten eine anonyme
Funktion nicht sowieso einfacher zu händeln wäre (zudem man
dann auch noch so pseudo-private Variablen setzen kann). Aber
k.A. was dieser Weg dann wieder für Nachteile mit sich bringt.


Macht ja auch auch gar nix - um ehrlich zu sein, finde ich es sowieso schwer, Javascript in größerem Umfang immer sauber zu halten - und gerade JQuery verlangt desöfteren eine Menge Disziplin, um kein Nudelgericht zu fabrizieren. Falls Du mal einen etwas strukturierteren Weg Javascript zu schreiben probieren möchtest, guck' Dir doch mal Dojo an.
  View user's profile Private Nachricht senden
 
Ähnliche Themen jQuery Plugin - Slider als Input wie in jQuery UI
jquery - hide content in jquery object
jQuery
jQuery 1.4
jQuery | Effects bei CSS
Das Feature von jQuery
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.