我有很长的物品清单,点击物品时可能会将其他相关物品移动到正下方。问题在于,如果移动的项目出现在被点击的项目上方,则该移动导致页面向上滚动并且鼠标不再位于用户的焦点中心上方。例如在洗牌后在屏幕上保留位置
- 项目1
- 项目2
- 项目3 - 点击这条1/1移到它的下方
- 项目4
点击后:
- 项目2
- 项目3
- 项目1 - 现在以下项目3已经切换了画面(坏)
- 项目4
做jQuery中招我使用$( '#物品1')insertAfter( '$项目3' 上。 ); 如何让Item3保持与窗口顶部相同的位置?
编辑:基于帕特里克 - DW的回答修改的方案,保持鼠标/屏幕位置正好在点击的产品:
var pos = $('#item3').offset().top;
$('#item1').insertAfter($('#item3');
pos = pos - $('#item3').offset().top;
// it may not have scrolled if the shuffling happened entirely below it
if (pos > 0) $(window).scrollTop($(window).scrollTop() - pos);
谢谢,这工作得很好。需要修改的情况下,项目被移动的项目被点击(在这种情况下,我什么都不做),但我可以管理。 – Jacob 2010-10-19 22:31:37