Tabs: Deprecate abort method. Fixes #7133 Tabs: Deprecate abort method

This commit is contained in:
David Petersen 2011-03-26 15:23:08 -04:00
parent aeaaf93ebb
commit 3d61244526

52
ui/jquery.ui.tabs.js vendored
View File

@ -337,7 +337,9 @@ $.widget( "ui.tabs", {
o.selected = self.anchors.index( el );
self.abort();
if ( self.xhr ) {
self.xhr.abort();
}
// if tab may be closed
if ( o.collapsible ) {
@ -413,7 +415,9 @@ $.widget( "ui.tabs", {
_destroy: function() {
var o = this.options;
this.abort();
if ( this.xhr ) {
this.xhr.abort();
}
this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );
@ -604,7 +608,9 @@ $.widget( "ui.tabs", {
url = $.data( a, "load.tabs" ),
eventData = self._ui( self.anchors[ index ], self.panels[ index ] );
this.abort();
if ( this.xhr ) {
this.xhr.abort();
}
// not remote
if ( !url ) {
@ -634,6 +640,17 @@ $.widget( "ui.tabs", {
self.element.find( self._sanitizeSelector( a.hash ) ).html( response );
})
.complete( function( jqXHR, status ) {
if ( status === "abort" ) {
// stop possibly running animations
self.element.queue( [] );
self.panels.stop( false, true );
// "tabs" queue must not contain more than two elements,
// which are the callbacks for the latest clicked tab...
self.element.queue( "tabs", self.element.queue( "tabs" ).splice( -2, 2 ) );
delete this.xhr;
}
// take care of tab labels
self._cleanup();
@ -647,26 +664,6 @@ $.widget( "ui.tabs", {
return this;
},
abort: function() {
// stop possibly running animations
this.element.queue( [] );
this.panels.stop( false, true );
// "tabs" queue must not contain more than two elements,
// which are the callbacks for the latest clicked tab...
this.element.queue( "tabs", this.element.queue( "tabs" ).splice( -2, 2 ) );
// terminate pending requests from other tabs
if ( this.xhr ) {
this.xhr.abort();
delete this.xhr;
}
// take care of tab labels
this._cleanup();
return this;
},
url: function( index, url ) {
this.anchors.eq( index ).data( "load.tabs", url );
return this;
@ -749,6 +746,15 @@ if ( $.uiBackCompat !== false ) {
}
});
}( jQuery, jQuery.ui.tabs.prototype ) );
// abort method
(function( $, prototype ) {
prototype.abort = function() {
if ( this.xhr ) {
this.xhr.abort();
}
};
}( jQuery, jQuery.ui.tabs.prototype ) );
}
})( jQuery );