hi,
after trying to figure out how i could easily use the the asp.net
server control clientid's for jquery, especially when i had more than
one ascx on a page, i came up with the following:

function getAspNetClientIds(prefix)
{
        var ids = new Object();
        var prefixLength = prefix.length;
        var delimiter = "_";

        $("[id^=" + prefix + "]").each(function() {
                var bits = this.id.substr(prefixLength).split(delimiter);
                var l = bits.length - 1;
                var node = ids;

                for (var i = 0; i < l; i++)
                {
                        var cn = node[bits[i]];

                        if (cn == null)
                        {
                                cn = new Object();
                                node[bits[i]] = cn;
                        }
                        else
                                if (typeof cn == "string")
                                {
                                        node[bits[i]] = new Object();
                                        node[bits[i]].value = cn;
                                        cn = node[bits[i]];
                                }

                        node = cn;
                }

                node[bits[l]] = "#" + this.id;
        });


        return ids;
}

which means i can just do something like

var ids = getAspNetClientIds("ctl00_ContentPlaceHolder1_");

whilst this might not been immediately helpful, it does mean i can
then do something like:

doAddressStuff(ids.MainPerson.MainAddress);
doAddressStuff(ids.MainPerson.PreviousAddress);
doAddressStuff(ids.SecondPerson.MainAddress);
doAddressStuff(ids.SecondPerson.PreviousAddress);

does this seem like a reasonable method, or is there a better approach?

Reply via email to