控制BX滑块从外部的功能
Control BX Slider from outside of function
我在一个页面上有多个BX滑块。我不想在JavaScript中给每个滑动条一个显式的ID(如文档所建议的),因为可能有未知数量的滑动条。每个旋转木马在标记中都有一个ID。
滑块也会在某个断点处改变配置。
我希望能够告诉滑块在页面加载时转到某个幻灯片(如$('#slider1').goToSlide(2)
)。
然而,.goToSlide()
方法并没有像那样暴露,因为它没有被分配给那个ID(只有.js-carousel
类)。
那么我怎么才能做到这一点呢?
$ ->
$('.js-carousel').each ->
# Flags and selector cachine
id = '#' + $(this).attr('id')
sliderLoaded = false
$slider = $( id )
$wrapper = $slider.closest('.js-carousel-wrapper')
$body = $('body')
# Load different options based on the breakpoint
sliderOptions = ( breakpoint ) ->
switch breakpoint
when 'large'
bxLargeOptions =
mode: 'fade'
pagerCustom: id + '_pager'
controls: false
video: true
adaptiveHeight: true
# captions: true
onSliderLoad: onSliderLoad
when 'multi'
bxMultiSmallOptions =
controls: false
minSlides: 2
maxSlides: 6
slideWidth: 128
slideMargin: 0
onSliderLoad: onSliderLoad
infiniteLoop: false
pager: false
else
bxSmallOptions =
pagerCustom: '#pager'
controls: false
easing: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)'
video: true
adaptiveHeight: true
# captions: true
onSliderLoad: onSliderLoad
# Call on every slider load event
onSliderLoad = ->
# Set a flag
sliderLoaded = true
# get the custom next control
sliderNext =
$wrapper.find('.js-carousel-next')
# Get the custom prev control
sliderPrev =
$wrapper.find('.js-carousel-prev')
# Add active class to show controls
$wrapper.addClass('is-active')
# Return the slider type or false
sliderType = ( type ) ->
if $slider.data('carousel-type') == type
return true
else
return false
# Init or reload the slider
slider = ( option, reload ) ->
if reload
$slider.reloadSlider sliderOptions( option )
else
$slider.bxSlider sliderOptions( option )
# Load different sliders for small screens
enquire.register "screen and (max-width:767px)",
match: ->
if !sliderType( 'multi' )
if !sliderLoaded
slider()
else
slider( false, true )
else
if !sliderLoaded
slider( 'multi' )
else
slider( 'multi', true )
# Destroy multi sliders at larger screen sizes
unmatch: ->
if sliderType( 'multi' )
$slider.destroySlider()
# Load different sliders for large screens
enquire.register "screen and (min-width:768px)",
match: ->
if !sliderType( 'multi' )
if !sliderLoaded
slider('large')
else
slider('large', true)
# Custom slider controls
$wrapper.on 'click', '.js-carousel-control', (e) ->
# Prevent normal behaviour in case it's a link
# Although it should be a <button>
e.preventDefault()
# Get the direction stored in the data attribute
slide = $(this).data().slide
# Move the carousel
# Default is to move to a specific slide number
switch slide
when 'prev' then $slider.goToPrevSlide()
when 'next' then $slider.goToNextSlide()
else $slider.goToSlide slide
我有一个剧本,它只需要一点点乐趣让它工作。假设这是你的HTML:
<h3>Slideshow 1</h3>
<ul id="slider1" class="slider">
<li><img src="http://bxslider.com/images/730_200/hill_trees.jpg" /></li>
<li><img src="http://bxslider.com/images/730_200/me_trees.jpg" /></li>
<li><img src="http://bxslider.com/images/730_200/houses.jpg" /></li>
</ul>
<h3>Slideshow 2</h3>
<ul id="slider2" class="slider">
<li><img src="http://bxslider.com/images/730_200/tree_root.jpg" /></li>
<li><img src="http://bxslider.com/images/730_200/trees.jpg" /></li>
<li><img src="http://bxslider.com/images/730_200/hill_road.jpg" /></li>
</ul>
<h3>Slideshow 3</h3>
<ul id="slider3" class="slider">
<li><img src="http://bxslider.com/images/730_200/tree_root.jpg" /></li>
<li><img src="http://bxslider.com/images/730_200/trees.jpg" /></li>
<li><img src="http://bxslider.com/images/730_200/hill_road.jpg" /></li>
</ul>
这是JS:
var sliders = [];
$('.slider').each(function () {
sliders.push($(this).bxSlider({
mode: 'fade',
auto: true,
autoControls: true,
pause: 2000
}));
});
sliders[1].goToSlide(1);
诀窍是在初始化每个滑块之前进入循环,然后您有对每个slider
的引用,允许您选择一个并访问其api。参见这个例子:http://jsfiddle.net/wosszb0w/3/
相关文章:
- Firebase2(Firebase.google.com)推送通知-从外部管理
- 如何从外部页面激活非默认引导选项卡
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何从外部url寻址数据
- 从外部函数渲染后更改ReactJS类的状态
- 使用ajax长轮询从外部API更新页面上的响应
- 在选择更改时更改从外部javascript生成的flash播放器
- 从外部js文件编辑现有的谷歌地图
- CkEditor复制/粘贴实现-从编辑器复制和从外部编辑器复制
- Javascript从外部站点获取html
- 如何在从外部连接时将外部文件包含到node-js项目中
- 网络驱动程序中使用的向下滚动功能从网页的哪个部分进行搜索
- GWT:可以从外部JavaScript而不是JSNI调用Java方法吗
- 访问模块.从外部文件导出
- 从外部 txt 加载阵列
- 包括从外部文件到HTML的查询功能(使用Dropbox进行本地测试)
- AngularJS:使用虚拟机从外部调用控制器功能
- 访问功能内的成员/从外部设置成员
- 当链接页面加载时,使用jQuery/Javascript从外部链接应用过滤功能
- 控制BX滑块从外部的功能