我应该如何使用/计数jQuery .find()

时间:2012-01-04 20:11:52

标签: jquery dom traversal

我使用的是我在这里找到的jQuery插件:http://tutorialzine.com/2011/03/photography-portfolio-shutter-effect/,除了我稍微改了一下。

它仍然按照预期的方式完美运行,但我添加了一个下一个按钮,用户cna用来跳到下一个图像,然后暂停一个循环的间隔,以便不会改变下一张图片太快了。

然而,我的问题在于一个明显的按钮。我不知道该怎么做,所以我添加了一个变量

var positionInt

这是最后一个列表项的位置,所以我知道我在列表中的位置。

如何将此项与此行创建的li对象一起使用:

var container = $('#container'),
    li = container.find('li');

打开正确的li项?

另外,如何找到li对象的长度?我尝试过li.size(),li.count()和li.length,但都没有。

或者是否有一种方法只使用.find()方法在当前可见的项目之前打开li项目?这就是它最初去前进的方式:

li.filter(':visible:first').hide(); // Hid the only visible li
if(li.filter(':visible').length == 0){
li.show(); // if nothing is visible load a li (Im not really sure what this is pointing at, but it loads the next li)
}

干杯

2 个答案:

答案 0 :(得分:13)

您可以获得li的数量:

var nr_li = $("#container ul li").length;

如果你知道当前使用的<li>的当前索引,你可以通过以下方式获得前一个索引:

$prev_li = $("#container ul li:eq(" + (index-1) + ")");

请确保您对index-1进行了一些计算和检查,以确保您不会超出界限并尝试使用不存在的元素。

你可以做的另一件事是循环遍历<li>并将它们中的每一个添加到一个数组中。然后,您可以从阵列中拉出前一个。

var array_li = new Array();

$('#container li').each(function() {
   array_li.push($(this));
});

答案 1 :(得分:5)

lengthsize()都可以帮助您计算jquery对象中元素的数量。

http://jsfiddle.net/KeKPb/

我发现length被更频繁地使用,因为size()调用的开销无需在内部使用length

你需要定义“不工作”的含义,因为这两种方法都是完全有效的。