Thanks again Scott for your constructive comments! I understand that
v1.8 should obsolete my need for this widget extension, but I created
it for two reasons:
1) to learn how to properly create such an extension since I have
never created a plugin or widget extension before
2) I need this functionality right now
Here's my code with your suggestions implemented. I just couldn't get
the syntax correct for your "You could also just bind to the
dialogopen
event in _init. " suggestion. As it turned out having the
functionality I wanted in the open in the _init instead made more
sense -- but that's a bit of a cop out since I haven't learned how to
extend the dialog's open event yet!!!
// This code block extends the uiDialog widget by adding a new boolean
option 'sticky' which,
// by default, is set to false. When set to true on a dialog instance,
it will keep the dialog's
// position 'anchored' regardless of window scrolling.
/****************** Start of uiDialog widget extension
****************/
(function($) {
var _init = $.ui.dialog.prototype._init;
$.ui.dialog.prototype._init = function() {
var self = this;
_init.apply(this, arguments);
if (self.options.sticky) {
self.uiDialog.css('position', 'fixed');
};
this.uiDialog
.bind('dragstop', function(event, ui) {
if (self.options.sticky)
storeLocation(ui.position.left,
ui.position.top);
})
.bind('resizestart', function(event, ui) {
if (self.options.sticky)
storeLocation(ui.position.left - $
(window).scrollLeft(),
ui.position.top - $(window).scrollTop
());
})
.bind('resizestop', function(event, ui) {
if (self.options.sticky) {
self.uiDialog.css({
'position': 'fixed',
'left': self.location.left,
'top': self.location.top
});
};
});
function storeLocation(_left, _top) {
self.location = { left: _left, top: _top };
};
};
$.ui.dialog.defaults.sticky = false;
})(jQuery);
/***************** End of uiDialog widget extension
*********************/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jQuery UI" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/jquery-ui?hl=en
-~----------~----~----~----~------~----~------~--~---