使用jQuery查找行索引

时间:2011-05-25 11:39:23

标签: javascript jquery

<div class="parent">
  <div class="formRow js-TextBox"><a></div>  <------ index 0
  <div class="formRow js-Image"><a></div> <------ index 1
  <div class="formRow js-TextBox"><a></div><------ index 2
  <div class="formRow js-ImageList"><------ index 3
  <div class="formRow js-Image"><a></div> <-- **This should return 3 but is returning 4 because I search index on the basis of formRow**
</div>

查找formRow索引的代码

var parent = $(this).parents("div.formRow");
var rowIndex = parent.parent().find("div.formRow").index(parent);

请参阅上面的代码,并告知如何找到我点击锚元素formRow的{​​{1}}索引。

问题是最后一个表单行包含另一个a,但我想要父表单行的索引。

3 个答案:

答案 0 :(得分:0)

你可以修改上面的内容 - 我会在前三个中添加另一个css类 - primaryRow,并在jQuery表达式中使用它而不是formRow

好的 - 运行此代码:

 $('.parent > div').addClass('primaryRow');

添加课程。

然后

 var rowIndex = $('.primaryRow').index($(this).parents().find('.primaryRow'));

答案 1 :(得分:0)

我将消除歧义并在渲染时向元素提供行号,即

<div class="formRow js-TextBox" id="row<%= rownumber %>"><a></div>

或者作为锚点的ID:

<div class="formRow js-TextBox"><a id="row<%= rownumber %>"></div>

有很多方法可以解决这个问题。我总觉得如果事情看起来很难,那么我就是从错误的方向接近它(或者说是错误的)。

答案 2 :(得分:0)

这很有效。

$('a').click(function(){
var i = $(this).parents('.parent > .formRow').index('.parent > .formRow');
alert(i);
    return false;
});

检查出来:jsfiddle