mirror of
https://github.com/twbs/bootstrap.git
synced 2024-11-30 12:24:19 +01:00
Merge branch 'tab-event' of https://github.com/kasperp/bootstrap into kasperp-tab-event
This commit is contained in:
commit
24b05fe94a
@ -357,6 +357,26 @@ $('#my-modal').bind('hidden', function () {
|
|||||||
})
|
})
|
||||||
</script></pre>
|
</script></pre>
|
||||||
</p>
|
</p>
|
||||||
|
<h3>Events</h3>
|
||||||
|
<table class="zebra-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="width: 150px;">Event</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>changed</td>
|
||||||
|
<td>This event fires when the tabs are changed. The event provides an additional parameter which holds id of the previous tab and the id of the new current tab. This information is stored in an object with two properties called from and to, e.g. <code>{to: '#home', from: '#profile'}</code>. This event allows you load and change content of the tabs on request.</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<pre class="prettyprint linenums">
|
||||||
|
$('#.tabs').bind('changed', function (e, c) {
|
||||||
|
// do something with c.from and c.to ...
|
||||||
|
})</pre>
|
||||||
<h3>Demo</h3>
|
<h3>Demo</h3>
|
||||||
<ul class="tabs" data-tabs="tabs" >
|
<ul class="tabs" data-tabs="tabs" >
|
||||||
<li class="active"><a href="#home">Home</a></li>
|
<li class="active"><a href="#home">Home</a></li>
|
||||||
|
6
js/bootstrap-tabs.js
vendored
6
js/bootstrap-tabs.js
vendored
@ -30,11 +30,12 @@
|
|||||||
, href = $this.attr('href')
|
, href = $this.attr('href')
|
||||||
, $ul = $this.closest('ul')
|
, $ul = $this.closest('ul')
|
||||||
, $controlled
|
, $controlled
|
||||||
|
, current = $ul.find('.active a').attr('href')
|
||||||
|
|
||||||
if (/^#\w+/.test(href)) {
|
if (/^#\w+/.test(href)) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
|
|
||||||
if ($this.hasClass('active')) {
|
if ($this.parent('li').hasClass('active')) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,6 +43,7 @@
|
|||||||
|
|
||||||
activate($this.parent('li'), $ul)
|
activate($this.parent('li'), $ul)
|
||||||
activate($href, $href.parent())
|
activate($href, $href.parent())
|
||||||
|
$this.trigger("changed", {from:current, to:href})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,4 +61,4 @@
|
|||||||
$('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
|
$('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
|
||||||
})
|
})
|
||||||
|
|
||||||
}( window.jQuery || window.ender );
|
}( window.jQuery || window.ender );
|
||||||
|
38
js/tests/unit/bootstrap-tabs.js
vendored
38
js/tests/unit/bootstrap-tabs.js
vendored
@ -11,39 +11,61 @@ $(function () {
|
|||||||
})
|
})
|
||||||
|
|
||||||
test("should activate element by tab id", function () {
|
test("should activate element by tab id", function () {
|
||||||
var tabsHTML = '<ul class="tabs">'
|
var $tabsHTML = $('<ul class="tabs">'
|
||||||
+ '<li class="active"><a href="#home">Home</a></li>'
|
+ '<li class="active"><a href="#home">Home</a></li>'
|
||||||
+ '<li><a href="#profile">Profile</a></li>'
|
+ '<li><a href="#profile">Profile</a></li>'
|
||||||
+ '</ul>'
|
+ '</ul>')
|
||||||
|
|
||||||
|
|
||||||
$('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-runoff")
|
$('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-runoff")
|
||||||
|
|
||||||
$(tabsHTML).tabs().find('a').last().click()
|
$tabsHTML.tabs().find('a').last().click()
|
||||||
equals($("#qunit-runoff").find('.active').attr('id'), "profile")
|
equals($("#qunit-runoff").find('.active').attr('id'), "profile")
|
||||||
|
|
||||||
$(tabsHTML).tabs().find('a').first().click()
|
$tabsHTML.tabs().find('a').first().click()
|
||||||
equals($("#qunit-runoff").find('.active').attr('id'), "home")
|
equals($("#qunit-runoff").find('.active').attr('id'), "home")
|
||||||
|
|
||||||
$("#qunit-runoff").empty()
|
$("#qunit-runoff").empty()
|
||||||
})
|
})
|
||||||
|
|
||||||
test("should activate element by pill id", function () {
|
test("should activate element by pill id", function () {
|
||||||
var pillsHTML = '<ul class="pills">'
|
var $pillsHTML = $('<ul class="pills">'
|
||||||
+ '<li class="active"><a href="#home">Home</a></li>'
|
+ '<li class="active"><a href="#home">Home</a></li>'
|
||||||
+ '<li><a href="#profile">Profile</a></li>'
|
+ '<li><a href="#profile">Profile</a></li>'
|
||||||
+ '</ul>'
|
+ '</ul>')
|
||||||
|
|
||||||
|
|
||||||
$('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-runoff")
|
$('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-runoff")
|
||||||
|
|
||||||
$(pillsHTML).pills().find('a').last().click()
|
$pillsHTML.pills().find('a').last().click()
|
||||||
equals($("#qunit-runoff").find('.active').attr('id'), "profile")
|
equals($("#qunit-runoff").find('.active').attr('id'), "profile")
|
||||||
|
|
||||||
$(pillsHTML).pills().find('a').first().click()
|
$pillsHTML.pills().find('a').first().click()
|
||||||
equals($("#qunit-runoff").find('.active').attr('id'), "home")
|
equals($("#qunit-runoff").find('.active').attr('id'), "home")
|
||||||
|
|
||||||
$("#qunit-runoff").empty()
|
$("#qunit-runoff").empty()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test( "should trigger changed event on activate", function () {
|
||||||
|
var $tabsHTML = $('<ul class="tabs">'
|
||||||
|
+ '<li class="active"><a href="#home">Home</a></li>'
|
||||||
|
+ '<li><a href="#profile">Profile</a></li>'
|
||||||
|
+ '</ul>')
|
||||||
|
, changeCount = 0
|
||||||
|
, from
|
||||||
|
, to;
|
||||||
|
|
||||||
|
$tabsHTML.tabs().bind( "changed", function (e, c){
|
||||||
|
from = c.from;
|
||||||
|
to = c.to;
|
||||||
|
changeCount++
|
||||||
|
})
|
||||||
|
|
||||||
|
$tabsHTML.tabs().find('a').last().click()
|
||||||
|
|
||||||
|
equals(from, "#home")
|
||||||
|
equals(to, "#profile")
|
||||||
|
equals(changeCount, 1)
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
Loading…
Reference in New Issue
Block a user