• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[MooTools] Informationen aus function(e) - click

Animal21

Neues Mitglied
Hallo Leute,
ich hab meine kleinen probleme damit, informationen auf der eventvariable "e" bei der function click, function(e)... zu ziehen.

Ich hab eine klasse, welche am ende eine liste von items in einem ul, als a-tag erstellt.
Dabei wird für das clicken auf ein a-tag ein click.event definiert.
Nun möchte ich auslesen können, was in dem a-tag steht, weis aber nicht sorecht, wie die syntax ist...

könnt hr mir helfen? hier etwas code:

Code:
        addContent: function(text){
            var list = new Element("ul#pageListList");
         
                var pLink = new Element("a", {
                    href: '../php/getdata.php?data='+pageName,
                    html: pageName,
                    events: {
                        click:function(e){
                            e.stop();
                            $$('#changeOwnerLink').set('text', '[COLOR=red]hier soll der inhalt des a-tag rein[/COLOR]');
                        }
                    }
                });
                pItem.adopt(pLink);
                list.adopt(pItem, 'bottom');
            }
            list.inject(this.popup);
        },

mfg
#aní
 
Werbung:
danke
: ((( warum bin ich da nich selber drauf gekommen?
darf ich gleisch nochwas fragen, bevor ich einen neuen thread aufmache:

die klasse hat zusätzlich folgende funktion
Code:
        addButton: function(text){
            var button = new Element('div', {
                'class': 'popupButton',
                'text': text
            });
            Popup.implement(Events);
            button.addEvent('click', function(){
                this.popup.destroy();
                if(this.overlay != null){
                    this.overlay.set('tween', {
                        onComplete: function(el){
                            el.destroy();
                        }
                    });
                    this.overlay.tween('opacity', 0);
                }                
            }.bind(this));
            button.inject(this.popup, 'bottom');
        },
damit wird für das css-popup (was das ganze ist) ein schließen button hinzugefügt... ich würd nun gern auch beim clicken auf einen der links das ganze popup schließen... wie kann ich da noch zugriff drauf nehmen?

mfg
ani
 
Werbung:
Gibt's bei dem Code keine Fehlermeldung?
Du weißt wo du diese findest in deinem Browser?

Du bist ein bissche fixiert auf das Eventobjekt. Ich weiß nicht wie Mootools das verändert oder erweitert, das steht aber bestimmt in der Dokumentation. Es hat aber sicher nichts, mit dem popup zu tun. Ich kenne mich aber nicht so gut mit mootools aus, dass ich an deinem Code erkennen kann, was du schliessen möchtest, bzw. wo da Problem ist. Was soll denn onComplete konkret zerstört werden?
 
gibt keine fehlermneldungen...

der code mit dem button, ist wie es halt momentan durch nen button zerstört wird, ich möchte aber, dass des popup object durch das 'click'-event zerstört wird.
 
Werbung:
Löse doch einfach beim Anklicken eines Links den onclick-Handler des Buttons aus, der normalerweise für das Schließen zuständig ist.
 
und wie hab ich da noch zugriff auf das object möcht ich wissen.
"this" kann ich ja nicht mehr nehmen... is ja schon außerhalb, DAS ist meine eigentliche frage (sorry...)
 
Einfach indem du auf das Objekt zugreifst. Nur welches?
this.popup.destroy() rufst du ja schon, also das sollte "zerstört" werden.

EDIT: und hast du mal nach Fehlermeldungen geschaut???
 
Werbung:
ja hab ich, gibt keine fehlermeldung... ist doch egal, ob der eventhandler e, el oder bob heißt, oder was meinste?

ich kann in dem event 'click' NICHT mehr mit this arbeiten, weil damit nicht mehr das popup-objekt angesprochen wird, sondern das element 'pLink'.

ich hab durch recherche erfahren, dass ich dass popup-objekt mit .bind(this), an das 'click'-event hängen kann... dann funktioniert auch wieder this.destroy()....
aber nun habe ich das problem, dass ich 'this.text' nicht mehr verwenden kann, da this nun auf das popup-object zeigt und nicht mehr auf das element mit dem a-tag.

Code:
Popup.implement({
    addContent: function(text){
    arr = text.split("|");
    var list = new Element("ul#pageListList");
    
    for(var i=0;i<arr.length;i++){
        arr2=arr[i].split(":");
        pageName = arr2[0];
        mar = 20;
        mar += arr2[1] * 15;
        var pItem = new Element("li", {
            styles: {
                margin: '0 0 0 '+mar+'px',
            }                    
        });
        var pLink = new Element("a#link_"+pageName, {
            href: '../php/getdata.php?data='+pageName,
            html: pageName,
        });
        pLink.addEvent('click', function(e) {
            e.stop();
            
            $$('#changeOwnerLink').set('text', [COLOR=darkorchid]this.text[/COLOR]);[COLOR=darkorchid] <-- geht nicht mehr[/COLOR]
            $$('#ownerName').set('value', t[COLOR=darkorchid]his.text[/COLOR]);[COLOR=darkorchid] <-- geht nicht mehr[/COLOR]
            
            [COLOR=red]this[/COLOR].popup.destroy();
            if([COLOR=red]this[/COLOR].overlay != null){
                [COLOR=red]this[/COLOR].overlay.set('tween', {
                    onComplete: function(el){
                        el.destroy();
                    }
                });
                [COLOR=red]this[/COLOR].overlay.tween('opacity', 0);
            }
        [COLOR=red]}.bind(this));[/COLOR]
        
        pItem.adopt(pLink);
        list.adopt(pItem, 'bottom');
    }
    list.inject(this.popup);
    }
});
 
GESCHAFFFFFFFFFFT xD

Code:
Popup.implement({
    addContent: function(text){
    arr = text.split("|");
    var list = new Element("ul#pageListList");
    
    for(var i=0;i<arr.length;i++){
        arr2=arr[i].split(":");
        pageName = arr2[0];
        mar = 20;
        mar += arr2[1] * 15;
        var pItem = new Element("li", {
            styles: {
                margin: '0 0 0 '+mar+'px',
            }                    
        });
        var pLink = new Element("a#link_"+pageName, {
            href: '../php/getdata.php?data='+pageName,
            html: pageName,
            events: {
[COLOR=red]                click: function(e){            
                    [/COLOR][COLOR=red]$$('#changeOwnerLink').set('text', this.text);
                    $$('#ownerName').set('value', this.text);                    
                }[/COLOR]
            }
        });
        [COLOR=magenta]pLink.addEvent('click', function(e) {
            e.stop();            
            this.popup.destroy();
            if(this.overlay != null){
                this.overlay.set('tween', {
                    onComplete: function(el){
                        el.destroy();
                    }
                });
                this.overlay.tween('opacity', 0);
            }
        }.bind(this));[/COLOR]
        
        pItem.adopt(pLink);
        list.adopt(pItem, 'bottom');
    }
    list.inject(this.popup);
    }
});
JS ausgetrickst ^^
funktioniert alles

edit: sorry für den doppenpost
 
ja hab ich, gibt keine fehlermeldung... ist doch egal, ob der eventhandler e, el oder bob heißt, oder was meinste?
Ich meinte, dass das Objekt keine Funktion hat, die destroy() heißt. Es ist ein Eventobjekt.

ich kann in dem event 'click' NICHT mehr mit this arbeiten, weil damit nicht mehr das popup-objekt angesprochen wird, sondern das element 'pLink'.

ich hab durch recherche erfahren, dass ich dass popup-objekt mit .bind(this), an das 'click'-event hängen kann... dann funktioniert auch wieder this.destroy()....
aber nun habe ich das problem, dass ich 'this.text' nicht mehr verwenden kann, da this nun auf das popup-object zeigt und nicht mehr auf das element mit dem a-tag.
Hier lieferst du endlich eine Beschreibung, mit der man etwas hätte anfangen können.

Du hättest innerhalb der Funktion eine lokale Varibale mit dem Inhalt von this speichern können und dann in der Event Funktion darauf zugefriffen.

so:
Code:
        var pLink = new Element("a#link_"+pageName, {
            href: '../php/getdata.php?data='+pageName,
            html: pageName,
        });
        pLink.addEvent('click', function(e) {
            e.stop();
            var link = this;
            $$('#changeOwnerLink').set('text', [COLOR=darkorchid]link.text[/COLOR]);
            $$('#ownerName').set('value', [COLOR=darkorchid]link.text[/COLOR]);

..

und darüber wundere ich mich:
Code:
onComplete: function(el){
                        el.destroy();
Ich kenne mich mit mootools nicht so aus, aber el müßte eigentlich ein Eventobjekt sein und dieses hat laut Doku keine destroy() Funktion. Entweder ist das ein Fehler oder mootools ist hier inkonsistent
 
Werbung:
Zurück
Oben