Tabs: fixed to work with empty nav list again.

Fixes #4997 - No longer possible to start with empty tab then add() elements dynamically.
This commit is contained in:
Scott González 2009-12-25 18:25:46 +00:00
parent 4a995c68d4
commit 9a786e03a1
3 changed files with 48 additions and 4 deletions

View File

@ -42,6 +42,34 @@
<div id="colon:test"></div> <div id="colon:test"></div>
<div style="height: 300px;" id="inline-style"></div> <div style="height: 300px;" id="inline-style"></div>
</div> </div>
<div id="tabs3">
<div>
<ul id="tabs3-list">
<li><a href="#tabs3-1">1</a></li>
</ul>
</div>
</div>
<div id="tabs4">
<ul id="tabs4-list">
<li><a href="#tabs4-1">1</a></li>
</ul>
<ol>
<li><a href="#tabs4-1">1</a></li>
</ol>
</div>
<div id="tabs4a">
<ol id="tabs4a-list">
<li><a href="#tabs4a-1">1</a></li>
</ol>
<ul>
<li><a href="#tabs4a-1">1</a></li>
</ul>
</div>
<div id="tabs5">
<div>
<ul id="tabs5-list"></ul>
</div>
</div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -7,6 +7,24 @@ var el;
module("tabs: core"); module("tabs: core");
test('navigation markup', function() {
el = $('#tabs3').tabs();
ok($('#tabs3-list').hasClass('ui-tabs-nav'), 'custom markup; allow list to be any descendant');
el.tabs('destroy');
el = $('#tabs4').tabs();
ok($('#tabs4-list').hasClass('ui-tabs-nav'), 'first list found becomes nav - ul');
el.tabs('destroy');
el = $('#tabs4a').tabs();
ok($('#tabs4a-list').hasClass('ui-tabs-nav'), 'first list found becomes nav - ol');
el.tabs('destroy');
el = $('#tabs5').tabs();
ok($('#tabs5-list').hasClass('ui-tabs-nav'), 'empty list can be used');
el.tabs('destroy');
});
test('ajax', function() { test('ajax', function() {
expect(4); expect(4);
stop(); stop();
@ -34,6 +52,5 @@ test('ajax', function() {
}); });
}); });
})(jQuery); })(jQuery);

View File

@ -68,8 +68,7 @@ $.widget("ui.tabs", {
_tabify: function(init) { _tabify: function(init) {
// use $('li:first').parent() so we can find the first ul/ol in DOM order this.list = this.element.find('ol,ul').eq(0);
this.list = this.element.find('li:first').parent();
this.lis = $('li:has(a[href])', this.list); this.lis = $('li:has(a[href])', this.list);
this.anchors = this.lis.map(function() { return $('a', this)[0]; }); this.anchors = this.lis.map(function() { return $('a', this)[0]; });
this.panels = $([]); this.panels = $([]);