如果li具有类电流,则tiltSlider播放/暂停video元素

http://codepen.io/hennysmafter/pen/aNrVKG?editors=1010

有问题的代码是这样的:

(function($) { $(document).ready(function(){ $('video').each(function() { $(this).get(0).pause(); }); }); $(document).on('click','span',function(){ if ( $('li').hasClass('current') ) { $('li.current').find('video').each(function() { $(this).get(0).play(); }); } else if ( !$('li').hasClass('current') ) { $('li').find('video').each(function() { $(this).get(0).pause(); }); } }); })(jQuery); 

问题。

当用户点击第3个导航按钮时,li元素尚未为其分配自定义类。 所以它现在要求用户在同一个导航按钮上手动点击第二次(这显然是愚蠢的。)。

要求

带video元素的li可以是任何幻灯片,因此我无法对其进行硬编码。

我试过了什么

我已经尝试了Ayyoub Dahhane的建议,它的工作非常出色,但目前它是硬编码的,哪些幻灯片是video幻灯片,这不可能。 我已经尝试了一些其他代码,可以在http://codepen.io/hennysmafter/pen/PNvEPN和http://codepen.io/hennysmafter/pen/MydEBw看到我尝试延迟。 Codepen已经更改,因此没有链接。 但它无论如何都没有用。

我发现这绝对令人震惊,这被certificate是非常困难的。 所以这里我的最新尝试正在运行,但在控制台中显示了一些错误,它仍然需要双击: http : //codepen.io/hennysmafter/pen/aNrVKG?edit = 1010

所以回到绘图板。

好吧,有人问我,这是我的onclick函数的答案需要双击因为类赋值延迟 :


我找到了导致问题的原因:

单击某个范围时,您正在播放其父级具有“.current”类的元素。

但是当你点击一个元素时,它就是“.show”类,之前选择的span获得“.hide”类并保持“.current”类,直到动画结束(然后是“.show”&删除“.hide”类和“.current”类切换元素。

一种解决方案是更改选择器,如下所示:

 $(document).on('click','span',function(){ console.log('the if is running'); $('.current, .hide').find('video').each(function() { $(this).get(0).pause(); }); $('.show').find('video').each(function() { $(this).get(0).play(); }); }); 

通过执行此操作,无论何时单击某个跨度,您都会暂停其父级具有“.hide”类的元素,并播放其父级具有“.show”类的元素。

另一个解决方案应该是在应用类时创建一个事件( 如果CSS类发生了变化,请参阅jQuery – Fire事件 )。

  $(function(){ $("nav").on('click','span:nth-child(3)',function(){ $('video').each(function() { $(this).get(0).play(); }); }); $("nav").on('click','span:not(:nth-child(3))',function(){ $('video').each(function() { $(this).get(0).pause(); }); }); }) 

链接到 这里 测试