Ciao,
è un pò complicata, ma provoa spiegarmi al meglio (NB. nel codice vedrete che utilizzo il framework jQuery, ma poco importa):
sul DOM ho due elementi, A e B.
Per oguno di essi creo un oggetto OGGETTO che fa alcune cose, tra le quale appioppare ai suddetti element A e B dei listener (onclick, onmouseover, ecc.). Grosso modo ho scritto così:
e qua casca l'asino (ovvero io):Codice PHP:function OGGETTO ( elemento ) {
var _element = $( instance );
this.ID = _element.attr( 'id' );
// .. altre proprietà dell'oggetto, tipo posizione, colore ecc.
[b]mioArray[ this.ID ] = this[/b];
}
OGGETTO.prototype.AddEventListener = function() {
var tooltip = $( '.ui-tooltip' );
var self = this; <--- QUA HO I CASINI
( self.element )
.mouseover(function( e ) {
if ( !self.editMode ) {
tooltip.css({
left : ( e.pageX - 100 ) + 'px',
top : ( e.pageY - 100 ) + 'px'
}).show();
$( '.ui-tooltip-body' ).html( $(this).next().html() );
}
})
.mouseout(function( e ) {
tooltip.hide();
})
.click(function() {
tooltip.hide();
self.editMode = true;
self.InitVisual();
});
}
OGGETTO.prototype.Set = function() {
var line = this.element;
var px = ( line.position().left + line.width() );
var linkId = this.object.LinkTo;
[b]mioArray[ this.ID ].left = px;[/b]
};
in pratica, come vedete, metto l'oggetto mentre lo creo all'interno di un array, in quanto in seguito ho bisogno di recuperare l'OGGETTO costruito su A mentre sono in un event di B.
Il problema è che non si aggiorna, o meglio i listener di B puntano su this, se cambiassi this con il riferimento corretto dell'arry tutto funzionerebbe .. mi domando però se ci sia un modo per puntare direttamente all'oggetto OGGETTO, quello del this nei listener e non all'array, che sono due cose diverse.
Lo so .. è un pò cervellotico e incasinato, spero che qualcuno intuisca le mie intenzioni e mi sappia consigliare.
Ciao, Davide

Rispondi quotando