Hello, I am having some difficulties writing a class, in my code I have a class 
where I need to be able to bind event listeners to values. In my code I want 
the variable pointerIndex to be accessible outside of the initialize function, 
but right now it is not. If I make a global variable for pointerIndex I can 
solve the problem, but I would rather have a class variable using the this 
keyword. 

I am not positive, but I believe the problem is from my event listeners on the 
line: 

Now: $(e).observe('click', this.doSlide.bind(featuresWrapper[i].id)); 

Before: (working) $(e).observe('click', 
mySlide.doSlide.curry(featuresWrapper[i].id));

With the new way of calling the doSlide function I can't even seem to be able 
to call the function, nothing happens when the function should get called. 
Before I was using the curry function to try and pass the values of the 
featuresWrapper array to the doSlide function. I was able to get that to work, 
but I would rather just use bind and this to make the code more object 
oriented. Based on my alert statements I can tell that the this keyword is 
different inside and outside of the map function.
var SlideShow = Class.create({

initialize: function(parentDiv) {

this.pointerIndex = 0;

//pointerIndex = 0;

// Load the event listener for each section

document.observe("dom:loaded", function() {

var featuresWrapper = $('featuresWrapper').childElements();

var i = 0;

alert(this);

$(parentDiv).childElements().map(function(e) {

alert(this);

$(e).observe('click', this.doSlide.bind(featuresWrapper[i].id)); 

//$(e).observe('click', mySlide.doSlide.curry(featuresWrapper[i].id));

i++;

}); 


slides = $$('.featureImage').map(function(e) {

return e.id;

});

});

},


doSlide: function(slideClicked) {

alert('here');

if(active == 0) {

active = 1;

var yValCurrent = $(slides[this.pointerIndex]).viewportOffset().top;

//var yValCurrent = $(slides[pointerIndex]).viewportOffset().top;

var yValClick = $(slideClicked).viewportOffset().top;

var yValDiff = yValClick - yValCurrent;


var pointerShift = 0;

if (Math.abs(yValDiff) == Math.abs(210)) {

pointerShift = 70; // Change this to get the height as well as a few more

}

else {

pointerShift = 140;

}


if (yValDiff > 0) {

$$('.featureImage').map(function(e) {

new Effect.Move(e, { y: -yValDiff, duration: .8, afterFinish: function(e) { 
active = 0; } });

});

new Effect.Move('featurePointer', { y: pointerShift });

}

else if (yValDiff < 0) {

$$('.featureImage').map(function(e) {

new Effect.Move(e, { y: -yValDiff, duration: .8, afterFinish: function(e) { 
active = 0; } });

});

new Effect.Move('featurePointer', { y: -pointerShift });

}


this.pointerIndex = slides.indexOf(slideClicked);

}

} 

});


var slides;

var active = 0;

//var pointerIndex = 0;

var mySlide = new SlideShow('featureList');

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to