微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我对jQuery的$(选择器).each()有困难

示例: http://jsfiddle.net/KyW6c/2/

我有一个有序的清单.每个列表项都是我的投资组合中的项目.我正在写一些jQuery,它会将一个单击的列表项移动到有序列表的左上角.我已经完成了这个,但我遇到的问题是所点击的列表项目正在转移.此代码在小提琴中提供(注释掉).

我试图实现的解决方案将每个列表项的位置设置为绝对,并且一旦页面加载,就将左右都设置为有序列表中的当前位置.我不知道我是否遇到麻烦,因为我误解了.each()的作用,或者只是如何实现它.

谢谢.

编辑:问题是每个列表项的左侧和顶部值都被设置为0,因此它们只是在左上角重叠.如果你取消注释jQuery,你会看到问题.

编辑2:我发现,如果我在设置左侧和顶部属性的同时没有将位置设置为绝对,则它可以正常工作.

解决方法

问题是当你遍历每个元素时,你设置’postion:absolute’,这是从定位中删除当前元素.当每个元素从布局中“移除”时,以下元素浮动到0,0位置.

通过从下向上迭代,您可以先保存左/上,然后应用postion:absolute而不影响下一个元素:

$($('.project').get().reverse()).each(function(){
    var pos = $(this).position();
    $(this).css({
      left: pos.left + 'px',top: pos.top + 'px',position: 'absolute','z-index': '999'
    })
  });

  // your original code
  $('.project').click(function(){
    var $this  = $(this),left = $this.position().left + 'px',top  = $this.position().top + 'px';
    $this.css({
      left:      left,top:       top,position:  'absolute','z-index': '999'
    }).animate({
      left:       0,top:        0,width:      '750px'
    },'fast','swing')
  });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐