Auf Objekt Attribut zugreifen
Can
- javascript
0 misterunknown0 bubble0 misterunknown0 bubble
0 bubble0 unknown
Hallo Leute,
habe ich die Möglichkeit auf div.txt zuzugreifen mit dem
Click-Handler den ich auf button einsetze.
<script>
var div = {
txt : "Hallo!",
btn : $("<button>1</button>")
}
$("body").append(div.btn);
$("button").bind("click", function(){
alert("hier sollte -div.txt- ausgegeben werden");
});
</script>
Danke im voraus.
Moin,
Hallo Leute,
habe ich die Möglichkeit auf div.txt zuzugreifen mit dem
Click-Handler den ich auf button einsetze.
Da Javascript clientseitig ausgeführt wird und div.txt wahrscheinlich auf deinem Server liegt hast du keinen direkten Zugriff. Du kannst aber mit einem HTTP-Request (Stichwort: AJAX) die Datei nachfordern.
Tipp: Les dir die Einführung in AJAX durch.
Grüße Marco
Er hat aber ein Objekt namens div mit der Eigenschaft txt ;)
var div = {
txt : "Hallo!",
btn : $("<button>1</button>")
}
MfG
bubble
Moin,
ok, ich geh dann mal lesen lernen :)
Grüße Marco
ok, ich geh dann mal lesen lernen :)
Alles in Ordnung, ich hatte in meinem Post auch schon Ajax erklärt, dann ist mir aber das Objekt aufgefallen, -> alles gelöscht und neu geschrieben :'D
MfG
bubble
<script>
var div = { txt : "Hallo!", btn : $("<button>1</button>") } $("body").append(div.btn); $("button").bind("click", function(){ alert("hier sollte -div.txt- ausgegeben werden"); }); </script>
Willst du wirklich JEDEM button-Element diese Funktion für das click-Event zuweisen?
Wenn du sie nur dem erzeugten button-Element zuweisen willst:
~~~javascript
div.btn.bind("click", function(){
alert("hier sollte -div.txt- ausgegeben werden");
});
Und zu deiner Frage:
'div' sollte global sein also alert(div.txt);
Und eine "sauberere" Erzeugung des button-Elements wäre:
var div = {
txt : "Hallo!",
btn : $(document.createElement("button"));
}
An sich ließe sich auch der Text als Attribut vom button-Element speichern, dann wird die Sache noch simpler und du brauchst keine globale Variable mehr:
$(body).append(
$(document.createElement("button"))
.attr({"data-message":"Hallo!"})
.append(document.createTextNode("1"))
.click(function(){
alert($(this).attr("data-message"));
});
);
(Das ist vielleicht mehr Text, aber das button-Element ist nun völlig unabhängig.)
MfG
bubble
Einfach über ~~~javascript
$("button").bind("click", function(){
alert(div.txt);
});
oder
~~~javascript
var div = {
txt : "Hallo!",
btn : $("<button>1</button>"),
hnd : function() {
alert(this.txt);
}
}
$("body").append(div.btn.bind("click", $.proxy(div.hnd, div)));
oder
var div = function(txt, btn){
$("body").append($(btn).bind("click", function() {
alert(txt);
}));
}
div("Hallo!", "<button>1</button>");
oder
...
Einfach über ~~~javascript
$("button").bind("click", function(){
alert(div.txt);
});
> oder
> ~~~javascript
var div = {
> txt : "Hallo!",
> btn : $("<button>1</button>"),
> hnd : function() {
> alert(this.txt);
> }
> }
> $("body").append(div.btn.bind("click", $.proxy(div.hnd, div)));
oder
var div = function(txt, btn){
$("body").append($(btn).bind("click", function() {
alert(txt);
}));
}
div("Hallo!", "<button>1</button>");
> oder
> ...
Hallo!
Dein erster Vorschlag geht nicht, da ich mehrere Instanzen von div bilde :-)
Dein zweiter Vorschlag ist bereits meine aktuelle lösung.
Es geht mir nur darum zu wissen, ob es möglich ist mit EINEM ATTRIBUT eines Objektes, das Objekt SELBST ZU IDENTIFIZIEREN, um auf weitere Attribute zuzugreifen.
Es geht mir nur darum zu wissen, ob es möglich ist mit EINEM ATTRIBUT eines Objektes, das Objekt SELBST ZU IDENTIFIZIEREN, um auf weitere Attribute zuzugreifen.
Nein, das geht nicht!