Autor |
Nachricht |
zweitaccount
Threadersteller
Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 11.08.2010 16:33
Titel [jQuery] kapseln |
|
|
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();
}); |
|
|
|
|
|
Kash
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Mi 11.08.2010 16:39
Titel
|
|
|
.parent(selector) , .parents(selector) , .closest(selector)
|
|
|
|
|
Anzeige
|
|
|
zweitaccount
Threadersteller
Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 11.08.2010 16:59
Titel
|
|
|
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?
|
|
|
|
|
sahnemuh
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 11.08.2010 17:47
Titel
|
|
|
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.
|
|
|
|
|
zweitaccount
Threadersteller
Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Do 12.08.2010 21:42
Titel
|
|
|
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.
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Fr 13.08.2010 09:19
Titel
|
|
|
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.
|
|
|
|
|
|
|
|
Ä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
|
|