Hi,

With help from this tutorial 
http://bililite.com/blog/understanding-jquery-ui-widgets-a-tutorial/
I started to create my own custom ui objects based on the ui widget
factory

I am hoping somebody could help me with the object syntax.

//////////////////////////////////////////////////////////
Question 1) Alternate way to call a method of the widget.
I am able to call method darker() of my widget using this syntax:

$().ready(function() {
        var aGreen = $('#test4 .target').green4();
        $('#test4 .target').green4('darker');
});

For me it is more natural to do the same thing using the below syntax
but
it does not work. Can someone tell me why it doesn't work and/or show
my the best practice approach
to create a variable of a widget object instantiation and reference it
later.

$().ready(function() {
        var aGreen = $('#test4 .target').green4();
        aGreen.darker();
});

///////////////////////////////////////////////////////////////////
Question 2) How make a function return something.
Supposing my widget has a getHello() method that returns a "hello"
string
How do I call that method of my widget. I tried the below code but it
does not work.
$().ready(function() {
        var aGreen = $('#test4 .target').green4();
        console.log("response: "+ $('#test4 .target').green4('getHello'));

});



///////////////////////////////////////////////////////////////////
Question 3) How to pass a parameter to a function.
Supposing I have setDarker(value) function that takes a parameter
How do I invoke that function. Below is the syntax I hope would
work but it doesn't.

$().ready(function() {
        var aGreen = $('#test4 .target').green4();
        aGreen.setDarker("big");

});

BAnd finally below is the html code I used for testing,
Also a  link to the same code is here
http://docs.google.com/Doc?docid=0AbxHJxs0V9KvZGRucDVyNnJfMTdmZ3ZmOG4zNA&hl=en

Thank you for any help
David

//////////////////////////////////////////////////////////////////////////////////
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"; lang="en-
US"><head profile="http://gmpg.org/xfn/11";>
        <title>Hacking at 0300 : Understanding jQuery UI widgets: A tutorial</
title>

        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/
jquery.min.js" type="text/javascript"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/
jquery-ui.min.js" type="text/javascript"></script>

<script type="text/javascript">
$.widget('ui.green4', {
        getLevel: function () { return this._getData('level'); },
    setLevel: function (x) {
        var greenlevels = this._getData('greenlevels');
        var level = Math.floor(Math.min(greenlevels.length-1, Math.max
(0,x)));
        this._setData('level', level);
        this.element.css({background: greenlevels[level]});
    },
    _init: function() { this.setLevel(this.getLevel()); },
    darker: function() { this.setLevel(this.getLevel()-1); },
        setDarker: function(value){console.log("value: "+value)},
        getHello: function(){"hello"},
    lighter: function() { this.setLevel(this.getLevel()+1); },
    off: function() {
        this.element.css({background: 'none'});
        this.destroy();
    }
});

$.ui.green4.defaults = {
    level: 15,
    greenlevels:
['#000','#010','#020','#030','#040','#050','#060','#070','#080','#090','#0a0','#0b0','#0c0','#0d0','#0e0','#0f0',
'#fff']
};
</script>

<script type="text/javascript">
$().ready(function() {
        var aGreen = $('#test4 .target').green4();
        $('#test4 .target').green4('darker');
});
</script>

</head>
<body>

<div id ="test4">
<p class="target" >This is a test paragraph</p>
</div>


</body>
</html>

Reply via email to