Can: Auf Objekt Attribut zugreifen

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.

  1. 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

    1. Er hat aber ein Objekt namens div mit der Eigenschaft txt ;)

      var div = {
                                      txt : "Hallo!",
                                      btn : $("<button>1</button>")
                              }

      MfG  
      bubble
      
      1. Moin,

        ok, ich geh dann mal lesen lernen :)

        Grüße Marco

        1. 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

  2. 	<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

  3. 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
    ...

    1. 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.
      
      1. 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!