对jquery很新,但我希望能够在div中定位div。
我目前正在使用它:
var items = $('#menu li').click(function() {
var index = items.index(this);
$(window).scrollTo(('#holder').eq(index), 800);
});
和持有人看起来像这样
<div id="holder">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item test"></div>
但由于某些原因,id似乎并不针对任何一个div。或者至少滚动不会对它们起作用。有人可以建议吗?
谢谢!
答案 0 :(得分:1)
在代码中选择$
时,您遗漏了#holder
,可能会出现语法错误。试试这个。
var items = $('#menu li').click(function() {
var index = items.index(this);
$(window).scrollTo($('#holder').eq(index), 800);
//You can also use $(this).index()
$(window).scrollTo($('#holder').eq($(this).index()), 800);
});
答案 1 :(得分:1)
$('#holder')
指的是一个元素。 $('#holder > div')
指的是#holder
的所有孩子,因此您可能希望这样做:
var items = $('#menu li').click(function() {
var index = items.index(this);
$(window).scrollTo($('#holder > div').eq(index), 800);
});
您还可以使用$('#holder > .item')
,$('#holder').children()
,$('#holder').children('.item')
。
答案 2 :(得分:1)
您的代码中有几处错误。正如ShankarSangoli所说,您需要向$
添加('#holder')
以使其成为jQuery对象:$('#holder')
。
同样$('#holder').eq(index)
正在选择当前索引的#holder
元素,但您想要选择#holder
元素的子元素。试试这个:$('#holder').children().eq(index)
。
这是您的代码的工作版本。注意我使用了.animate()
函数(在html
/ body
元素上调用,因为那些是实际滚动的元素,这取决于所使用的浏览器):
var items = $('#menu').children().click(function() {
$('html, body').animate({ scrollTop : $('#holder').children().eq($(this).index()).offset().top }, 800);
});
以下是演示:http://jsfiddle.net/fCnM5/
另请注意,要获取所单击菜单项的索引,您只需使用$(this).index()
,因为.index()
函数将根据其兄弟姐妹获取当前选择的索引。