javascript - jQuery .before 的问题

标签 javascript jquery html

因此,我正在构建一个非常简单的带 4 个 div 的轮播。它使用 2 个 jQuery 函数将 div 设置为第一个或最后一个位置。只有 alpha 过渡,因为我不需要移动。

出于某种原因,虽然我可以使用 .eg(n) 等访问我的 div,但是第一个、最后一个和其他各种数字在此函数中不起作用。

代码:

$('#prev').click(function() {

    $('.container .divname').animate({opacity: 0}, 1000,function(){ 

     $('.container .divname:first').before($('.container .divname:last')); 

     $('.container .divname').animate({opacity: 1}, 1000); 

    });

    return false;

});

所以该功能不起作用。

$('#prev').click(function() {

        $('.container .divname').animate({opacity: 0}, 1000,function(){ 

         $('.container .divname:eq(0)').before($('.container .divname:eq(3)')); 

         $('.container .divname').animate({opacity: 1}, 1000); 

        });

        return false;

    });

这也不起作用,但如果我将 eq(3) 更改为 eq(2) 它会起作用,但显然会漏掉我的一个 div。我仍然可以访问 eq(3),因为我对其进行了测试,并将其背景设置为红色。

$('.container .divname:eq(3)').css({'background-color' : '#ff0000'});

这有效...

谁能告诉我为什么会这样?

Html例子如下

<html>
     <div class="container">
          <div class="divname">
               <p>some content</p>
          </div>
          <div class="divname">
               <p>some content</p>
          </div>
          <div class="divname">
               <p>some content</p>
          </div>
          <div class="divname">
               <p>some content</p>
          </div>
     </div>
</html>

编辑:

我已经将观众中的 w3c children 的所有 ID 更改为 class。问题仍然存在。

http://jsfiddle.net/3P8t5/1/

最佳答案

你的问题的根源是你已经把你的 .before() 函数放在附加到你的四个 div 的回调函数中移动 div - 因此它被称为四次意味着一切都被移动了四次让你回到正方形一个 ...因为它是一个如此简单的小循环,所以速度很快,而且看起来什么也没发生。

解决方案 - 仅将动画功能附加到容器;

$('#prev').click(function() {

// Fade just the container - not each placeholder meaning the callback function is only called once, not four times
$('.container').animate({
    opacity: 0
}, 1000, function() {

    $('.container .divname:eq(0)').before($('.container .divname:eq(3)'));

    // Fade back in just the container - not each placeholder
    $('.container').animate({
        opacity: 1
    }, 1000);
});
return false;
});​

http://jsfiddle.net/cywjs/1/

关于javascript - jQuery .before 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13534491/

相关文章:

javascript - React - 每秒更新组件而不重新渲染整个表单

javascript - 带有侧箭头的 CSS 方形 div

html - 在 window.onload 上显示正文是一种不好的做法吗?

javascript - 发现 HTML 对象标记方法/属性

javascript - VPC下Lambda访问Api Gateway

javascript - 获取两个跳过办公时间的日期时间之间的时差

javascript - 如何在 Nightwatch.js 中的部分使用命令?

javascript - 在网站中添加记住功能,以便在加载 url 时加载同一页面

c# - 我可以在同一页面 MVC 上执行 AcceptVerbs(HttpVerbs.Get/Post) 和 hijax 吗?

html - 我如何构建我的 HTML 以优先考虑特定的 div 宽度而不是另一个 div?