• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Wie spricht man bestimmte Parameter -> Funktion -> bestimmten Objektes von aussen an

sodah

Member
Wie spricht man bestimmte Parameter -> Funktion -> bestimmten Objektes von aussen an

Hallo,

ich habe eine Javascript-Funktion:
....
Code:
$.fn.testfunktion = function( options ) {
	...
	$(this).data( name, new $.testfunktion( this, options ) );
	.......
	return returnValue;
};


$.testfunktion = function(element, options) {
	....
	$.testfunktion.IsReady = function() {		
		console.log("1");
	}
	...
};


dann gibt es verschiedene DIVs, welche die Funktion nutzen.

<div id="test1" style="height:400px; width:50px;">
test1
</div>

<div id="test2" style="height:60px; width:400px">
test2
</div>

<div id="test3" style="height:60px; width:100%;">
test3
</div>

<script type="text/javascript">
    $("#test1").testfunktion ({settings: "test1.xml"});
    $("#test2").testfunktion ({settings: "test2.xml"});  
    $("#test3").testfunktion ({settings: "test3.xml"});
</script>

Jetzt soll eine außenstehende Funktion eines anderen Scriptes die Funktion $.testfunktion.IsReady eines bestimmten DIVs aufrufen und quasi damit etwas innerhalb des DIVs starten.
Mit $("#test1").testfunktion.IsReady() klappts irgendwie nicht. Es wird immer nur der letzte DIV (test3) angesprochen.
 
AW: Wie spricht man bestimmte Parameter -> Funktion -> bestimmten Objektes von aussen

Mach' doch bitte ein Minimalbeispiel, mit dem wir das Verhalten reproduzieren können. So ist das eindeutig zu wenig Information. So sehe ich nirgends, dass in dem IsReady irgendso das Element aufgerufen wird.

Aber prinzipiell hast du wahrscheinlich ein Problem mit dem Context, da in deinem Aufrufschema der Context in IsReady immer die Funktion testfunktion ist und keinerlei Information über den Selektor/Node hat. Wahrscheinlich kannst du dein Schema retten, indem du deine testfunktion so umschreibst, dass du sie auch nach dem Initialisieren aufrufen kannst und dann etwas zurück gegeben wird, das dann IsReady() kennt und es mit den gewünschten Informationen ausstattet. Der Aufruf wäre dann $("#test1").testfunktion().IsReady().
 
AW: Wie spricht man bestimmte Parameter -> Funktion -> bestimmten Objektes von aussen

Habs mal schnell extrahiert. Alles funktioniert, bis auf die letzte Zeile welche auskommentiert ist.

Edit fiddle - JSFiddle

HTML:
<div id="test1" style="height:400px; width:50px;">
test1
</div>

<div id="test2" style="height:60px; width:400px">
test2
</div>

<div id="test3" style="height:60px; width:100%;">
test3
</div>

(function (root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['jquery'], factory);
	} else {
		if(root.jQuery) {
			factory(root.jQuery);
		} else { 
			factory(root.Zepto);
		}
	}
}(this, function ($, undefined) {
    $.fn.testfunktion = function( options ) {
        var name = "testfunktion";
        var returnValue = this;
        this.each(function() {
            var instance = $(this).data( name );
            if ( instance ) {
                instance.option( options || {} ); 
            } else {
                $(this).data( name, new $.testfunktion( this, options ) )
            }
        });    
        return returnValue;
    };
    $.testfunktion = function(element, options) {
        var internerWert = element.id;
        $(document).ready(function() {
             ini(element.id, options.settings);
         });
        function ini(idname, settingsfilename){
            $("#" + idname).html("funktioniert in - " + idname);
        }
        $.testfunktion.IsReady = function(id) {
            $("#" + internerWert).html("das geht nicht in - " + internerWert);
            console.log(internerWert);
            console.log(id);
        };
    };
}));

$("#test1").testfunktion ({settings: "test1.xml"});
$("#test2").testfunktion ({settings: "test2.xml"});  
$("#test3").testfunktion ({settings: "test3.xml"});

//$("#test2").testfunktion.IsReady("test2");
 
AW: Wie spricht man bestimmte Parameter -> Funktion -> bestimmten Objektes von aussen

Danke!!!! Da hab ich den Wald für Bäumen nicht mehr gesehen.
 
Zurück
Oben