0
4

1 回答 1

0

您编写的代码中有一些语法错误。

does this line of code "var count = showing.parent().parent();" 
point to the div #slider

是的,它指向滑块 div。

更好的 ..showing.closest('div');

我认为这没有任何意义

showing.parent().parent().next().children(':second');

根据上面的HTML,这将获得不存在第二个孩子..next div

closest('#Slider').children(':second');没有任何意义。。

完整代码..经过一些假设

function slideShow() {

    var showing = $('#slider .is-showing');
    var count = showing.closest('div');

    var next = count.next('div').length 
                ? showing.closest('div').next('div').children(':first') 
                :  count.find('img');


    showing.fadeOut(800, function() {
        next.fadeIn(800).addClass('is-showing');
    }).removeClass('is-showing');

    setTimeout(slideShow, 5000);
}​

更新

你说下一个 div 不存在,

我的意思是说.children(':second'); 没有任何意义(不是 div 上的下一个),因为每个 div 只有一个子元素,即锚元素。.children() 将获得直接的孩子而不是嵌套的孩子..

第一张图片是一个“正在展示”的类,然后他使用 .next() 来获取下一个 img 元素

这对上面的 HTML 不起作用,因为 next 会得到直接的兄弟,当你对图像执行 .next() 时,你什么也得不到,因为图像没有兄弟。

为什么我们要在淡入淡出函数中添加和删除类(正在显示)

因为淡出功能是异步的..所以你需要在回调中做到这一点。否则会立即反映。

于 2012-11-13T00:48:44.740 回答