hi donb, according to a lengthy discussion we had on this mailinglist
yesterday the quotes are good practice. see:
http://groups.google.com/group/jquery-en/msg/821f4eb134c51d3d  (is is
just one message on a 31-long thread, if u have time ,read the whole
thread it is interesting )

As for this issue after extensive googling i found out that setTimeout
and setInterval scope the called function to the window object, not
the object the setinterval is called in.

Therefore here is how to do it:

var datascape = {
   'mouseX': 0,
    'myInterval': 0,
    'create': function(){

 var thisObj = this;  //<-- store this object instance in a variable

   $('#datascape').bind('mousemove', function(e)
         {
             this.mouseX = e.pageX;
         }).bind("mouseover", function()
         {
             datascape.myInterval = setInterval(function() {
thisObj.move(); }, 1000);  // <-- use the vairable referencing the
instance

         }).bind("mouseout", function()
         {
             clearInterval(datascape.myInterval);
         });
    },

    'move': function(){
           $.log('datascape.move : mouseX = ' + this.mouseX);
         }
 }

On Thu, Jan 1, 2009 at 3:46 PM, donb <falconwatc...@comcast.net> wrote:
>
> You should change 'move' to move (remove apostrophes).
>
>
> On Jan 1, 9:01 am, "Alexandre Plennevaux" <aplennev...@gmail.com>
> wrote:
>> Hello mates,
>>
>> i have an object datascape which among other things, contains a
>> property storing the mouse position, and a function that uses that
>> property. Inside another method i
>>
>> var datascape = {
>>    'mouseX': 0,
>>    'myInterval': 0,
>>    'create': function(){
>>        $('#datascape').bind('mousemove', function(e)
>>         {
>>             this.mouseX = e.pageX;
>>         }).bind("mouseover", function()
>>         {
>>             this.myInterval = setInterval(this.move, 200);
>>
>>         }).bind("mouseout", function()
>>         {
>>             clearInterval(this.myInterval);
>>         });
>>    },
>>
>>    'move': function(){
>>           $.log('datascape.move : mouseX = ' + this.mouseX);
>>         }
>>
>> }
>>
>> Yet the script does not work:
>> firebug console points at the setInterval call, saying:
>>
>> useless setInterval call (missing quotes around 
>> argument?)http://localhost/prototype/_js/frontend/proto.03.js
>> Line 172
>>
>> can someone help me / explain what i'm doing wrong ?
>>
>> Thank you,
>>
>> Alexandre
>>
>> PS: to all jquerians: happy 2009 !!

Reply via email to