我有很长的项目列表,点击某个项目可能会将另一个相关项目移到其下方。问题是如果移动的项目出现在被单击的项目上方,则移动会导致页面向上滚动并且鼠标不再位于用户焦点中心上方。 e.g。
点击后:
要在jquery中进行移动,我使用$('#item1')。insertAfter('$ item3'); 如何让Item3保持与窗口顶部保持相同的位置?
编辑:基于patrick-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);
答案 0 :(得分:1)
假设有可以滚动的空间,你应该可以做类似的事情。
$('#item1').insertAfter('#item3');
$(window).scrollTop( $(window).scrollTop() - $('#item3').outerHeight() );
这会根据scrollTop
的outerHeight数量调整item3
位置。
由于.scrollTop()
的值表示隐藏在顶部的像素数,因此我们减少隐藏垂直像素的数量,以便向下滚动页面,将#item3
返回到其原始位置(或接近它。)
答案 1 :(得分:0)
查看scrollTo插件。单击列表项后可以调用它。