Are there any issues with IE preserving these values?  Part of the
reason for my question is that I read somewhere (annoyingly, I can't
remember where, otherwise I would go back and double-check it) that IE
doesn't handle retaining these things well.

So would something like this be the way to go about using the
_javascript_ closures:-

using a function like

        function SetupSortData() {
            var sortField;
            var sortOrder;
            setSortField = function(field) { sortField = field; };
            setSortOrder = function(order) { sortOrder = order; };
            setSort = function(field, order) { sortField = field;
sortOrder = order; };
            getSort = function() { return sortField + ' ' +
sortOrder; };
        }

and calling it at $(document).ready to initialise it.  Then when the
sorting elements are clicked, we can call setSortField(value) and
setSortOrder(value) or setSort(value, value), retrieving the value in
the search function using getSort() ?

Thanks

MH


On Sep 20, 10:16 pm, Michael Geary <m...@mg.to> wrote:
> The reason you can't find any information about jQuery variables is that
> jQuery doesn't have variables! :-)
>
> You're talking about JavaScript, not jQuery. jQuery is not a language of its
> own, it's just a library of JavaScript code that you can use in your own
> JavaScript code.
>
> If you look for information about JavaScript variables you will have much
> better luck.
>
> So about those JavaScript variables... Fortunately for all of us, you don't
> have to use hidden input fields if you merely want to store data that will
> persist for the lifetime of your page. An ordinary global variable works
> fine for that.
>
> Also, you don't have to use global variables. Even *local* variables can
> easily outlive the function invocation that creates them. A trivial example:
>
> // When the '#test' button is clicked,
> // alert a number that increments each time
>
> $(document).ready( testSetup );
>
> function testSetup() {
>     var i = 0;
>     $('#test').click( function() {
>         alert( ++i );
>     });
>
> }
>
> Here I made testSetup() a separate named function instead of the anonymous
> inline function that is more commonly used, just to make it clear that it *
> is* a separate function.
>
> testSetup() runs once and then returns immediately. What happens to the
> variable i when the function returns? Does it go away? No, JavaScript uses a
> *closure* to preserve this variable. Later, when you click the button, it
> calls the click callback function that issues the alert. Note that this
> inner function can still reference the i variable, and it can increment it
> too. JavaScript keeps that variable in existence as long as it needs to.
>
> Closures are a truly wonderful feature. Read up on them if you want a better
> understanding of how a lot of jQuery and JavaScript code works.
>
> So, is there ever a case where you *would* need to use a hidden input field
> instead of a global or local variable? Yes! If you want to preserve data
> even if the user hits the refresh button (or keyboard equivalent) to reload
> the page. When that happens, all JavaScript code and data is wiped clean and
> reloaded. If you want to preserve state in this situation, you can use a
> hidden form field. Or depending on what you are trying to do, you can use
> the hash fragment in your URL (the part after the #), or perhaps a cookie.
>
> But to simply keep data around as long as your page is running and not
> reloaded, global or local variables are all you need.
>
> -Mike
>
> On Sun, Sep 20, 2009 at 12:52 PM, Mad-Halfling <mad-halfl...@yahoo.com>wrote:
>
>
>
>
>
> > Am I correct in thinking that variable in jquery are limited in scope
> > by their parent functions, and if I want to persist data during a
> > particular page's lifetime (thinking of a page that will exist for a
> > while, being updated by AJAX calls, etc) I need to put it in an input
> > control on that page - I am wanting to store data like sort-field for
> > an AJAX updated data grid, so that data will need to be persistent and
> > specific to that page, but I can't find any reference to global/page
> > variables in jquery, so I was assuming I would need to have some
> > hidden fields onthe page in which to store this data.
>
> > Cheers
>
> > MH- Hide quoted text -
>
> - Show quoted text -

Reply via email to