利用引导轮播“幻灯片”事件和 .next 类
Posted
技术标签:
【中文标题】利用引导轮播“幻灯片”事件和 .next 类【英文标题】:Utilise the Bootstrap Carousel "slide" event and the .next class 【发布时间】:2013-01-30 22:16:36 【问题描述】:所以我遇到了一个小问题(类似于我前几天发布的这个问题:http://bit.ly/11JpbdY),在加载时隐藏的一段内容上使用 SlabText。这一次,我试图让slabText 更新滑块中某些内容的显示(使用Twitter Bootstrap 的Carousel 插件)。
根据 Bootstrap 的 Carousel 插件的 Twitter 文档 (http://twitter.github.com/bootstrap/javascript.html#carousel),我正在尝试使用 slide
事件,以便重新调用 SlabText 以使其正确显示。
使用开发人员工具,我可以看到 Carousel 添加了一个 .next
类,因为它处理一个 .item
元素到下一个元素的幻灯片。然后在转移 .active
类之前将其删除。
我可以毫无问题地访问“幻灯片”事件,但尝试获取.next
元素被证明很麻烦。 到目前为止,这是我的代码的 JSFiddle:http://jsfiddle.net/peHDQ/
简单地说我的问题;如何正确使用slide
事件触发函数?
如果有任何其他信息有用,请告诉我。
补充说明:
由于我一直无法掌握.next
类,因此我正在尝试使用一些jQuery 来做到这一点。到目前为止,这是我的代码:
$('.carousel').carousel(
interval: 5000
).on('slide', function (e)
$(this).find('.active').next().find('.slab').slabText();
);
据我了解,这应该是抓取每个 .slab
元素并触发 SlabText 插件....唉,我得到一个错误:
"Uncaught TypeError: Object [object Object] has no method 'slabtext'"
谁能告诉我在这里做错了什么...?我使用完全相同的过程来添加一个类并且它工作正常(根据这个 JSFiddle:http://jsfiddle.net/peHDQ/2/)
【问题讨论】:
【参考方案1】:我发现了问题。问题是在下一张幻灯片可见之前调用了事件“幻灯片”。我添加了一点延迟,现在它工作正常。试试这个:
$('.carousel').carousel(
interval: 5000
).on('slide', function (e)
var xx = $(this);
setTimeout(function()
xx.find('.active').next().find('.slab').slabText();
, 0);
);
【讨论】:
抱歉,这只是这篇文章中的一种类型。我已经试过了(jsfiddle.net/peHDQ/2),唉,还是不高兴! 谢谢!这在一定程度上有效。所以我认为问题是在处理函数之前需要延迟。将时间设置为 50 毫秒的唯一问题是,如果用户连接速度较慢,问题仍然存在。如果您将其设置得更长,那些连接快速的人会看到口吃。对此有何建议? 较慢的互联网连接根本不重要,因为此 javascript 仅在整个页面加载后执行。您可能担心的是计算机速度较慢的人。但话又说回来,我认为这也不是问题,因为这个数字(50 毫秒)只是对浏览器的提示。这就是 JavaScript 的工作方式,它是一个单线程。因此,当您说在 50 毫秒后调用此函数时,它将切换到主线程,从而使项目可见。主线程结束后,会回到这个函数,执行slabText函数。 所以是的,即使您将提示设为 0 毫秒,此函数也将始终在主线程使项目可见后执行。 您有机会在任何较慢的浏览器上检查它吗?正如我告诉你的,这肯定适用于所有浏览器。但是,您需要设置一个标志,以便不会在每个元素上多次调用该函数。以上是关于利用引导轮播“幻灯片”事件和 .next 类的主要内容,如果未能解决你的问题,请参考以下文章