jQuery,根据匹配的页面/元素ID计算元素的n个位置

时间:2014-01-15 11:12:36

标签: javascript jquery wordpress

好的,所以我需要能够根据页面和页面之间的相互匹配来获得元素的n(从零开始)位置。元素ID ......

如果我举一个例子(假设当前页面ID是488),可能会更容易;

<ul id="work-grid">
    <li id="item-486" class="work-item"><!--/content--></li>
    <li id="item-487" class="work-item"><!--/content--></li>
    <li id="item-488" class="work-item"><!--/content--></li>
    <li id="item-489" class="work-item"><!--/content--></li>
    <li id="item-490" class="work-item"><!--/content--></li>
</ul>

正如您所看到的,列表项与匹配的数字ID 488是列表中的第三个(因此n值为2)。

问题是,这个网格出现在多个页面上(具有不同的ID)并且列表是动态填充的,所以我永远不知道匹配元素的位置。有没有办法可以使用jQuery获取它并将其添加到以下代码段(将2替换为正确的n位置)

$('#work-grid').trigger("colio", ["expand", 2]);

这可能几乎没有任何意义,所以如果需要澄清,请告诉我。

4 个答案:

答案 0 :(得分:1)

我认为index()就是你想要的:

var index = $('#item-488').index();

$('#work-grid').trigger("colio", ["expand", index]);

答案 1 :(得分:1)

假设您的元素在页面上出现一次,您可以执行以下操作:

$('#item-488').index();

找出元素的索引。在这里阅读index():http://api.jquery.com/index/适用于这种情况的位是:

  

如果没有参数传递给.index()方法,则返回值是一个整数,表示jQuery对象中第一个元素相对于其兄弟元素的位置。

以下是一个示例:http://jsfiddle.net/bnF6h/

答案 2 :(得分:1)

var page = 488;
var a = $( "li[id$='"+ page +"']");

您可以使用它根据页面ID动态选择项目ID。

应用它:

    var page = 488;
    var a = $( "li[id$='"+ page +"']").index();
    $('#work-grid').trigger("colio", ["expand", a]);

答案 3 :(得分:0)

你的意思是jQuery的index()方法? http://api.jquery.com/index/

If no argument is passed to the .index() method, the return value is an integer indicating the position of the first element within the jQuery object relative to its sibling elements.