Skip to content

Commit 63ec115

Browse files
saksscottgonzalez
authored andcommitted
Tabs: Added context to global selectors. Fixed #6710 - tabs module uses global selectors instead of local to "this.element" element.
1 parent 5f919b2 commit 63ec115

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

tests/unit/tabs/tabs_tickets.js

+21
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,25 @@ asyncTest( "#4581 - title attribute for remote tabs does not support foreign lan
9191
});
9292
});
9393

94+
95+
test('#6710 - selectors are global', function() {
96+
// http://bugs.jqueryui.com/ticket/6710
97+
expect(1);
98+
99+
var container = $('\
100+
<div>\
101+
<div id="tabs_6710">\
102+
<ul>\
103+
<li><a href="#tabs-1_6710">Nunc tincidunt</a></li>\
104+
<li><a href="#tabs-2_6710">Proin dolor</a></li>\
105+
</ul>\
106+
<div id="tabs-1_6710"> <p>first</p> </div>\
107+
<div id="tabs-2_6710"> <p>second</p>\
108+
</div>\
109+
</div>');
110+
container.find('#tabs_6710').tabs();
111+
ok( container.find('#tabs-2_6710').hasClass('ui-tabs-hide'), 'should find panels and add corresponding classes' );
112+
});
113+
114+
94115
})(jQuery);

ui/jquery.ui.tabs.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ $.widget( "ui.tabs", {
126126

127127
// inline tab
128128
if ( fragmentId.test( href ) ) {
129-
self.panels = self.panels.add( self._sanitizeSelector( href ) );
129+
self.panels = self.panels.add( self.element.find( self._sanitizeSelector( href ) ) );
130130
// remote tab
131131
// prevent loading the page itself if href is just "#"
132132
} else if ( href && href !== "#" ) {
@@ -139,7 +139,7 @@ $.widget( "ui.tabs", {
139139

140140
var id = self._tabId( a );
141141
a.href = "#" + id;
142-
var $panel = $( "#" + id );
142+
var $panel = self.element.find( "#" + id );
143143
if ( !$panel.length ) {
144144
$panel = $( o.panelTemplate )
145145
.attr( "id", id )
@@ -210,13 +210,13 @@ $.widget( "ui.tabs", {
210210
this.lis.removeClass( "ui-tabs-selected ui-state-active" );
211211
// check for length avoids error when initializing empty list
212212
if ( o.selected >= 0 && this.anchors.length ) {
213-
$( self._sanitizeSelector( self.anchors[ o.selected ].hash ) ).removeClass( "ui-tabs-hide" );
213+
self.element.find( self._sanitizeSelector( self.anchors[ o.selected ].hash ) ).removeClass( "ui-tabs-hide" );
214214
this.lis.eq( o.selected ).addClass( "ui-tabs-selected ui-state-active" );
215215

216216
// seems to be expected behavior that the show callback is fired
217217
self.element.queue( "tabs", function() {
218218
self._trigger( "show", null,
219-
self._ui( self.anchors[ o.selected ], $( self._sanitizeSelector( self.anchors[ o.selected ].hash ) ) ) );
219+
self._ui( self.anchors[ o.selected ], self.element.find( self._sanitizeSelector( self.anchors[ o.selected ].hash ) ) ) );
220220
});
221221

222222
this.load( o.selected );
@@ -337,7 +337,7 @@ $.widget( "ui.tabs", {
337337
var el = this,
338338
$li = $(el).closest( "li" ),
339339
$hide = self.panels.filter( ":not(.ui-tabs-hide)" ),
340-
$show = $( self._sanitizeSelector( el.hash ) );
340+
$show = self.element.find( self._sanitizeSelector( el.hash ) );
341341

342342
// If tab is already selected and not collapsible or tab disabled or
343343
// or is already loading or click callback returns false stop here.
@@ -496,7 +496,7 @@ $.widget( "ui.tabs", {
496496
$li.addClass( "ui-state-default ui-corner-top" ).data( "destroy.tabs", true );
497497

498498
// try to find an existing element before creating a new one
499-
var $panel = $( "#" + id );
499+
var $panel = self.element.find( "#" + id );
500500
if ( !$panel.length ) {
501501
$panel = $( o.panelTemplate )
502502
.attr( "id", id )
@@ -630,7 +630,7 @@ $.widget( "ui.tabs", {
630630
this.xhr = $.ajax( $.extend( {}, o.ajaxOptions, {
631631
url: url,
632632
success: function( r, s ) {
633-
$( self._sanitizeSelector( a.hash ) ).html( r );
633+
self.element.find( self._sanitizeSelector( a.hash ) ).html( r );
634634

635635
// take care of tab labels
636636
self._cleanup();

0 commit comments

Comments
 (0)