无法获取:使用index()可见

时间:2013-04-24 18:34:15

标签: jquery indexing visible

这是我的平面设计组合网站,我的过滤器遇到了一些麻烦。我用jQuery和类创建了它。当点击某个链接时,它会隐藏所有不是它的“.tags”。所有这一切都正常。 (第5-19行)

从第21行开始,我创建了一个在项目下面动态添加div和内容的函数。它查找存在多少元素,当前元素的位置,并找到新div应插入的位置(在3列行的末尾)。所有这一切都可以正常使用。

问题是,当某些'.tags'被过滤时,第二个函数无法正确找到当前元素的位置。这是因为我实际上并没有从中删除元素源代码,只是隐藏它们 - 我想保持这种方式,所以我不需要继续重新加载内容。

var portfolio = '#portfolio > a';
var elements = $(portfolio).children(':visible').length; //finds how many elements are in the portfolio
var getPosition = $(portfolio).siblings('a :visible').addBack().index(this);  //find the position of the div 

以上代码是问题区域(第25-26行),但这里是整个代码供参考:http://jsfiddle.net/cQUMs/5/

我的变量元素无论是否使用过滤器,都可以轻松获取正确数量的元素。 getPosition 在过滤任何内容之前获得正确的位置,但保留该数字;我需要它动态更新。

1 个答案:

答案 0 :(得分:0)

问题在于,您要编入索引的thisa元素。所以试试这个(updated demo):

//find the position of the div
var getPosition = $(portfolio).children(':visible').index( $(this).children() );