这个.click无效的原因

时间:2010-09-14 01:31:14

标签: jquery click cycle

我有这个page我正在播放旋转幻灯片。我目前正在改变每一秒进行测试。幻灯片显示效果很好,但由于某些原因而停止它并不容易。我在顶部有一个应该阻止它的链接。

<a class="stop" href="#">Stop to play the video</a>

$('.stop').click(function(){
   $('#slideshow').cycle('stop');
});

这应该停止脚本但不是。但是如果你打开firebug并将这一行粘贴到控制台中,脚本就会停止。是什么给了什么?

   $('#slideshow').cycle('stop');

4 个答案:

答案 0 :(得分:5)

仔细看看你的代码,然后你在$(document).ready(...)处理程序之外和html中的元素之前发出了javascript,所以你试图将事件附加到一个没有'的元素上存在。

将您的点击处理程序移到$(document).ready(...)内或将其放在html中的链接下方。

答案 1 :(得分:2)

这可能是一个时间问题,在页面加载时我在FireBug中收到此消息:

[cycle] terminating; zero elements found by selector
[cycle] terminating; too few slides: 1
[cycle] terminating; zero elements found by selector
[cycle] terminating; zero elements found by selector
[cycle] terminating; zero elements found by selector
[cycle] terminating; zero elements found by selector

但是,如果我在页面加载后执行以下代码,则链接可以正常工作。

$('.stop').click(function(){
$('#slideshow').cycle('stop');
});

答案 2 :(得分:2)

使用$.live()$.delegate()方法 - 它们将绑定到与选择器匹配的所有当前和未来元素。

http://api.jquery.com/live/

http://api.jquery.com/delegate/

答案 3 :(得分:0)

您是否有多个已添加“停止”类的元素,在这种情况下您可能会遇到问题。 如果是上述情况,您可以尝试以下方法:

$('a.stop').click(function(){
   $('#slideshow').cycle('stop');
});

如果您有多个带类停止的链接,那么如果您想绑定其中的每一个,您应该执行类似这样的操作

$('a.stop').each(function(){
$(this).each("click",function(){
   $('#slideshow').cycle('stop');
});
});

如果你只想绑定其中一个链接,那么只需添加一个id属性,然后在按id获取元素后将其绑定到元素。

注意:我假设您仅在页面加载后绑定元素。