我正在一个有多个部分的网站上工作,每个部分都包含大约5-10个项目。我正在尝试创建一个下一个/上一个导航,这将允许您滚动每个部分中的项目。这是我对此的代码:创建下一个/上一个导航
var prev_li = $('.projects ul li.selected').prev('li'),
prev_href = $(prev_li).children().attr('href'),
next_li = $('.projects ul li.selected').next('li'),
next_href = $(next_li).children().attr('href');
$('#previous-project').click(function(e){
if ($(prev_li).length) {
window.location = prev_href;
return false;
} else {
window.location = last_href;
return false;
}
});
然后从下一个项目中获得相同的结果。我的问题是有重复的项目(一些项目在多个部分)。这意味着多个项目具有相同的URL,因此一些项目在未选中时将获得“已选择”类。这意味着当您在多个部分的项目中并单击下一个或上一个按钮时,它将从项目的第一个实例转到上一个项目(即使该项目位于另一个部分中)。我需要一些有效的方法来指定每个部分内的项目列表,因此它只能通过这些项目旋转。
我有一个想法是一类添加到项目的每个列表和做这样的事情:
var traeng_prev_li = $('.transportation-engineering.projects ul li.selected').prev('li'),
traeng_prev_href = $(traeng_prev_li).children().attr('href'),
traeng_next_li = $('.transportation-engineering.projects ul li.selected').next('li'),
traeng_next_href = $(traeng_next_li).children().attr('href');
// same variables for each section
$('#previous-project').click(function(){
if ($(traeng_prev_li).length) {
window.location = traeng_prev_href;
return false;
} else if ($(struct_prev_li).length) {
window.location = struct_prev_href;
return false;
} else if ($(civil_prev_li).length) {
window.location = civil_prev_href;
return false;
} else if ($(archi_prev_li).length) {
window.location = archi_prev_href;
return false;
.... //all the way down through all the sections
的问题,这是一个),这是非常低效和b)我想就算你不在列表中,它仍然有一个长度,所以问题仍然存在?
好吧,我觉得有道理。那么,在每个常规项目页面上,我都会将相应的#结尾添加到边栏链接中?然后我会将代码更改为上面的代码。这将消除重复每个部分的代码的需要吗?我想我正在理解这个概念,但是你如何执行对我来说没有什么意义。 $()中的代码选择了什么?这将如何选择正确的李? – Andrew 2010-11-04 14:26:59
@andrew是的,您的项目网址需要添加'#'部分。我还更新了一些更多的信息.. –
2010-11-04 14:53:21
这非常有道理。非常感谢你的帮助! – Andrew 2010-11-04 15:23:39