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

Rya*_*ant 6 jquery dom traversal

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

它仍然以它应该的方式完美地工作,但我添加了一个下一个按钮,用户cna用它来跳到下一个图像,然后它暂停一个循环的间隔,以便不改变下一个图片很快.

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

var positionInt
Run Code Online (Sandbox Code Playgroud)

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

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

var container = $('#container'),
    li = container.find('li');
Run Code Online (Sandbox Code Playgroud)

打开正确的李项目?

另外,如何找到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)
}
Run Code Online (Sandbox Code Playgroud)

干杯

Jul*_*les 13

你可以得到的数字li如下:

var nr_li = $("#container ul li").length;
Run Code Online (Sandbox Code Playgroud)

如果您知道当前使用的当前索引,则<li>可以执行以下操作:

$prev_li = $("#container ul li:eq(" + (index-1) + ")");
Run Code Online (Sandbox Code Playgroud)

确保你做了一些计算和检查,index-1以确保你没有走出界限并尝试达到一个不存在的元素.

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

var array_li = new Array();

$('#container li').each(function() {
   array_li.push($(this));
});
Run Code Online (Sandbox Code Playgroud)


Jam*_*gne 5

双方lengthsize()会努力给你一个jQuery对象的元素数量的计数.

http://jsfiddle.net/KeKPb/

我发现这种length情况经常被使用,因为无论如何都不需要size()呼叫的开销,length无论如何它都在内部使用.

您需要定义"不工作"的含义,因为这两种方法都是完全有效的.