That is really nice and handy you wrote :), but I am writing a complex ajax 
application. I just created a simple scenario to show what I want. So yes, I 
really need it.


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Michael Geary
Sent: Tuesday, October 24, 2006 4:23 PM
To: 'jQuery Discussion.'
Subject: Re: [jQuery] jQuery and OOP

Do you really need an object at all? This (pun intended) would do the same
thing as all the code you listed:

   $(function() {
      var $btn = $('#btnCounter'), nr = 0;
      $btn.click( function() {
         $btn.attr( 'value', nr++ );
      });
   });

-Mike

> From: Kolman Nándor
> 
> I am new to jQuery, and I have a question concerning object 
> oriented programming. I have created a sample scenario.
> In the HTML code I add a button:
> <input type="button" value="Count" id="btnCounter" />
> 
> In js, I create a class called Counter. In the constructor I 
> add an event handler to the click event of the button. The 
> function I specify as the handler is a method of the Counter 
> class. I also store the button and the nr (the current value 
> of the counter) as an object property.
> 
> function Counter() {
>   $('#btnCounter').click(this.count);
>   this.button = $('#btnCounter');
>   this.nr = 0;
> }
> 
> In the count method I set the incremented value of the 
> counter to the text of the button.
> Counter.prototype = {
>   count: function() {
>     this.button.attr('value', this.nr++);
>   }
> }
> 
> And I need to create the object in the load event:
> $(window).load(function() {
>   new Counter();
> });
> 
> If I try to run the code I get: 'this.button has no 
> properties'. I know that the 'this' in the count method will 
> be the target of the event (the button). But that is not what 
> I need, it is the reference of the Counter object. 
> 
> If I rewrite the constructor I can make it work:
> function Counter() {
>   var oThis = this;
>   $('#btnCounter').click(
>     function() {
>       oThis.count();
>     }
>   );
>   this.button = $('#btnCounter');
>   this.nr = 0;
> }
> 
> But this is quite ugly :(. Is there a nicer way to achieve this?


_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

Reply via email to