I want to be able to have a progress bar periodically updated after a
button is clicked, then when the server-side task is complete - the
progress bar is no longer updated (to avoid hammering the server). I
have attempted to write a plug-in that extends the functionality of the
AJAX library loadIfModified() function. This plug-in allows the contents
of a <div> to be periodically updated after a defined interval. The
plug-in should also allow the update to be cancelled, however I have not
been able to successfully implement this. Any suggestions how to fix
this?
Here's my code:
var intervalTracker = new function() {};
$.fn.updateIfModified = function (options) {
// default settings
this.defaultSettings = {
name: 'noName',
url: '/',
interval: 5000
};
// merge the options with the default settings
var settings;
if (options) {
settings = $.extend(this.defaultSettings, options);
} else {
settings = this.defaultSettings;
}
// if the interval is negative, clear it
if (settings.interval < 0) {
if (intervalTracker['interval_' + settings.name]) {
clearInterval(intervalTracker['interval_' +
settings.name]);
}
// otherwise create a new interval and add to tracker
} else {
intervalTracker['interval_' + settings.name] =
setInterval(function() {
$(this).loadIfModified(settings.url);
}, settings.interval);
}
return this;
}
Here's how I start the updating:
$('status-container').updateIfModified({name: 'pollStatus', url:
'status.jsp', interval: 1000});
... and here's how I would like to cancel the updating:
$('status-container').updateIfModified({interval: -1});
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/