Since no one responded, (That will teach me to post a question on a Friday evening) I spent a lot of time trying to figure out a way to do this. The best solution I could come up with was inspired by https://stackoverflow.com/a/5760684/594602
Basically, override the existing val() function so that it checks for an override on the current element.
$.fn.old_val = $.fn.val;
$.fn.val = function ()
{
var ErikVal = this.data('ErikVal');
if (ErikVal)
{
return ErikVal.apply(this, arguments);
}
else
{
return this.old_val.apply(this, arguments);
}
};
In the _create() for the jQueryUI widget, I added the following:
_create: function ()
{
...
this.element.data('ErikVal', function ()
{
this.Picklist("option", { val: arguments[0] });
});
},
I'm not particularly proud of this, but it is working.