【发布时间】:2011-07-20 06:03:18
【问题描述】:
$(document).ready(function() {
$('div.post').click(function() {
// the clicked LI
var clicked = $(this);
// all the LIs above the clicked one
var previousAll = clicked.prevAll();
// only proceed if it's not already on top (no previous siblings)
if(previousAll.length > 0) {
// top LI
var top = $(previousAll[previousAll.length - 1]);
// immediately previous LI
var previous = $(previousAll[0]);
// how far up do we need to move the clicked LI?
var moveUp = clicked.attr('offsetTop') - top.attr('offsetTop');
// how far down do we need to move the previous siblings?
var moveDown = (clicked.offset().top + clicked.outerHeight()) - (previous.offset().top + previous.outerHeight());
// let's move stuff
clicked.css('position', 'relative');
previousAll.css('position', 'relative');
clicked.animate({'top': -moveUp});
previousAll.animate({'top': moveDown}, {complete: function() {
// rearrange the DOM and restore positioning when we're done moving
clicked.parent().prepend(clicked);
clicked.css({'position': 'static', 'top': 0});
previousAll.css({'position': 'static', 'top': 0});
}});
}
});
});
如何在单击链接时将 div 移动到 div 列表的顶部。
例如;
<div id=1>Div One <a>Click to update</a><a>a different link</a></div>
<div id=2>Div One <a>Click to update</a><a>a different link</a></div>
<div id=3>Div One <a>Click to update</a><a>a different link</a></div>
<div id=4>Div One <a>Click to update</a><a>a different link</a></div>
<div id=5>Div One <a>Click to update</a><a>a different link</a></div>
当您只点击任何 div 的“点击更新”链接时,它应该将该 div 移到页面顶部!
80% 已完成。感谢伙计们的迅速反应。将其发挥到最大。无论如何感谢@valipour,我设法让div仅在您单击特定链接时移动,方法是向链接添加一个类并更改我的前两行;
$('div.post').click(function() {
// the clicked LI
var clicked = $(this);
到;
$("a.rep").click(function() {
var clicked = $(this).closest("div.post");
html代码是;
<div id="wrapper">
<div class="post"><a class="rep">1 Aasdjfa</a> <a>6 Aasdjfa</a></div>
<div class="post"><a class="rep">2 Aasdjfa</a> <a>7 Aasdjfa</a></div>
<div class="post"><a class="rep">3 Aasdjfa</a> <a>8 Aasdjfa</a></div>
<div class="post"><a class="rep">4 Aasdjfa</a> <a>9 Aasdjfa</a></div>
<div class="post"><a class="rep">5 Aasdjfa</a> <a>10 Aasdjfa</a></div>
</div>
谢谢!
但它不适用于动态加载的 div?例如。我默认显示 10 个 div,然后我有一个脚本,当您滚动时会加载更多 div...当您单击其中任何一个时,此脚本不会移动自动加载部分中的 div...知道为什么吗?
【问题讨论】:
-
你能发布你的 javascript 还是更好,在jsfiddle.net 做一个新的小提琴并将你的代码放在那里?
-
jsfiddle.net/vHCQY 目前发生的情况是,当我点击另一个链接“不同的链接”时,它仍然会移动 div,这不是我想要的!
-
好的!感谢@pehmolelu 的提示,我可以通过将这一行 $("a.rep").click(function() 更改为 $("a.rep").live('click',函数(),它的工作就像一个魅力!谢谢,我希望这可以帮助任何正在寻找将 div 移动到页面顶部的方法的人!!!大涨!你们太棒了!!!
标签: javascript jquery ajax html scroll