Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Bootstrap
bootstrap
Commits
f026cfb8
Commit
f026cfb8
authored
10 years ago
by
Chris Rebert
Browse files
Options
Download
Plain Diff
Merge pull request #14069 from twbs/fix-13818
Use more robust "find next carousel item" logic
parents
d38fd028
cbba8e53
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
js/carousel.js
+9
-2
js/carousel.js
js/tests/unit/carousel.js
+26
-1
js/tests/unit/carousel.js
with
35 additions
and
3 deletions
+35
-3
js/carousel.js
+
9
-
2
View file @
f026cfb8
...
@@ -63,6 +63,13 @@
...
@@ -63,6 +63,13 @@
return
this
.
$items
.
index
(
item
||
this
.
$active
)
return
this
.
$items
.
index
(
item
||
this
.
$active
)
}
}
Carousel
.
prototype
.
getItemForDirection
=
function
(
direction
,
active
)
{
var
delta
=
direction
==
'
prev
'
?
-
1
:
1
var
activeIndex
=
this
.
getItemIndex
(
active
)
var
itemIndex
=
(
activeIndex
+
delta
)
%
this
.
$items
.
length
return
this
.
$items
.
eq
(
itemIndex
)
}
Carousel
.
prototype
.
to
=
function
(
pos
)
{
Carousel
.
prototype
.
to
=
function
(
pos
)
{
var
that
=
this
var
that
=
this
var
activeIndex
=
this
.
getItemIndex
(
this
.
$active
=
this
.
$element
.
find
(
'
.item.active
'
))
var
activeIndex
=
this
.
getItemIndex
(
this
.
$active
=
this
.
$element
.
find
(
'
.item.active
'
))
...
@@ -72,7 +79,7 @@
...
@@ -72,7 +79,7 @@
if
(
this
.
sliding
)
return
this
.
$element
.
one
(
'
slid.bs.carousel
'
,
function
()
{
that
.
to
(
pos
)
})
// yes, "slid"
if
(
this
.
sliding
)
return
this
.
$element
.
one
(
'
slid.bs.carousel
'
,
function
()
{
that
.
to
(
pos
)
})
// yes, "slid"
if
(
activeIndex
==
pos
)
return
this
.
pause
().
cycle
()
if
(
activeIndex
==
pos
)
return
this
.
pause
().
cycle
()
return
this
.
slide
(
pos
>
activeIndex
?
'
next
'
:
'
prev
'
,
$
(
this
.
$items
[
pos
]
))
return
this
.
slide
(
pos
>
activeIndex
?
'
next
'
:
'
prev
'
,
this
.
$items
.
eq
(
pos
))
}
}
Carousel
.
prototype
.
pause
=
function
(
e
)
{
Carousel
.
prototype
.
pause
=
function
(
e
)
{
...
@@ -100,7 +107,7 @@
...
@@ -100,7 +107,7 @@
Carousel
.
prototype
.
slide
=
function
(
type
,
next
)
{
Carousel
.
prototype
.
slide
=
function
(
type
,
next
)
{
var
$active
=
this
.
$element
.
find
(
'
.item.active
'
)
var
$active
=
this
.
$element
.
find
(
'
.item.active
'
)
var
$next
=
next
||
$active
[
type
](
)
var
$next
=
next
||
this
.
getItemForDirection
(
type
,
$active
)
var
isCycling
=
this
.
interval
var
isCycling
=
this
.
interval
var
direction
=
type
==
'
next
'
?
'
left
'
:
'
right
'
var
direction
=
type
==
'
next
'
?
'
left
'
:
'
right
'
var
fallback
=
type
==
'
next
'
?
'
first
'
:
'
last
'
var
fallback
=
type
==
'
next
'
?
'
first
'
:
'
last
'
...
...
This diff is collapsed.
Click to expand it.
js/tests/unit/carousel.js
+
26
-
1
View file @
f026cfb8
...
@@ -349,7 +349,7 @@ $(function () {
...
@@ -349,7 +349,7 @@ $(function () {
$carousel
.
remove
()
$carousel
.
remove
()
})
})
test
(
'
should skip over non-items
'
,
function
()
{
test
(
'
should skip over non-items
when using item indices
'
,
function
()
{
var
templateHTML
=
'
<div id="myCarousel" class="carousel" data-interval="1814">
'
var
templateHTML
=
'
<div id="myCarousel" class="carousel" data-interval="1814">
'
+
'
<div class="carousel-inner">
'
+
'
<div class="carousel-inner">
'
+
'
<div class="item active">
'
+
'
<div class="item active">
'
...
@@ -373,4 +373,29 @@ $(function () {
...
@@ -373,4 +373,29 @@ $(function () {
strictEqual
(
$template
.
find
(
'
.item
'
)[
1
],
$template
.
find
(
'
.active
'
)[
0
],
'
second item active
'
)
strictEqual
(
$template
.
find
(
'
.item
'
)[
1
],
$template
.
find
(
'
.active
'
)[
0
],
'
second item active
'
)
})
})
test
(
'
should skip over non-items when using next/prev methods
'
,
function
()
{
var
templateHTML
=
'
<div id="myCarousel" class="carousel" data-interval="1814">
'
+
'
<div class="carousel-inner">
'
+
'
<div class="item active">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
<script type="text/x-metamorph" id="thingy"/>
'
+
'
<div class="item">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
<div class="item">
'
+
'
</div>
'
+
'
</div>
'
+
'
</div>
'
var
$template
=
$
(
templateHTML
)
$template
.
bootstrapCarousel
()
strictEqual
(
$template
.
find
(
'
.item
'
)[
0
],
$template
.
find
(
'
.active
'
)[
0
],
'
first item active
'
)
$template
.
bootstrapCarousel
(
'
next
'
)
strictEqual
(
$template
.
find
(
'
.item
'
)[
1
],
$template
.
find
(
'
.active
'
)[
0
],
'
second item active
'
)
})
})
})
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment