From 9a786e03a1edda7efb31b0ad6b20e5bcd62d9482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 25 Dec 2009 18:25:46 +0000 Subject: [PATCH] Tabs: fixed to work with empty nav list again. Fixes #4997 - No longer possible to start with empty tab then add() elements dynamically. --- tests/unit/tabs/tabs.html | 28 ++++++++++++++++++++++++++++ tests/unit/tabs/tabs_core.js | 21 +++++++++++++++++++-- ui/jquery.ui.tabs.js | 3 +-- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/tests/unit/tabs/tabs.html b/tests/unit/tabs/tabs.html index 0675fc308..b45f544d9 100644 --- a/tests/unit/tabs/tabs.html +++ b/tests/unit/tabs/tabs.html @@ -42,6 +42,34 @@
+
+
+
    +
  • 1
  • +
+
+
+
+ +
    +
  1. 1
  2. +
+
+
+
    +
  1. 1
  2. +
+ +
+
+
+
    +
    +
    diff --git a/tests/unit/tabs/tabs_core.js b/tests/unit/tabs/tabs_core.js index 79e95ea41..20ab2b1fd 100644 --- a/tests/unit/tabs/tabs_core.js +++ b/tests/unit/tabs/tabs_core.js @@ -7,6 +7,24 @@ var el; 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() { expect(4); stop(); @@ -34,6 +52,5 @@ test('ajax', function() { }); }); - - + })(jQuery); diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js index 32f326d00..b9fad83d4 100644 --- a/ui/jquery.ui.tabs.js +++ b/ui/jquery.ui.tabs.js @@ -68,8 +68,7 @@ $.widget("ui.tabs", { _tabify: function(init) { - // use $('li:first').parent() so we can find the first ul/ol in DOM order - this.list = this.element.find('li:first').parent(); + this.list = this.element.find('ol,ul').eq(0); this.lis = $('li:has(a[href])', this.list); this.anchors = this.lis.map(function() { return $('a', this)[0]; }); this.panels = $([]);