0

休斯敦我们有一个情况.. 任何光线将不胜感激。

很难解释,但会尽力而为。我做了功课,但无法解决。具有类似于以下的代码。(静态的,很难改变。需要找到现有结构的解决方案。)。

有问题的数组是grade[]。

(line 1)  \<input id='grade[]'  onclick="curr_ndx(this);" \>   // index of grade[] is 0
(line 2)  \<input id='grade[]'  onclick="curr_ndx(this);" \>   // index of grade[] is 1
(line 3)  \<input id='grade[]'  onclick="curr_ndx(this);" \>   // index of grade[] is 2

我需要在“grade[]”数组中检索输入的“grade[]”索引。如果用户点击第 2 行的“输入”,它应该警告“1”,或者如果用户点击(第 3 行输入),则应该提示“2”。

谢谢一堆。

4

3 回答 3

2

在 jQuery 中,您可以使用.index()方法来找出给定项目的兄弟是这样的:

HTML:

<div id="grades">
<input \>
<input \>
<input \>
</div>

代码:

$("#grades input").click(function() {
    alert($(this).index());
});

工作演示:http: //jsfiddle.net/jfriend00/xvVGx/

仅供参考,您的输入字段上也不应该有重复的 id 值。也许你的意思是使用name='grade[]'而不是id='grade[]'.


如果您有其他输入字段并且只想计算id='grade[]'那些,那么您可以这样做:

$("#grades input").click(function() {
    alert($(this).index("[id*='grade[]']"));
});

但是,你真的不应该有重复的 id 值,所以它应该是这样的:

HTML:

<div id="grades">
<input name='grade[]' \>
<input name='grade[]' \>
<input name='grade[]' \>
</div>

代码:

$("#grades input[name='grade[]']").click(function() {
    alert($(this).index("[name='grade[]']"));
});
于 2013-03-26T05:50:01.753 回答
0

如果您给所有元素起相同的名称,则函数可以是:

function curr_ndx(el) {
  var els = document.getElementsByName(el.name);
  for (var i=0, iLen=els.length; i<iLen; i++) {
    if (els[i] == el) return i;
  }
}

如果元素在表单中,您也可以利用它:

function curr_ndx(el) {
  var els = el.form[el.name];
  for (var i=0, iLen=els.length; i<iLen; i++) {
    if (els[i] == el) return i;
  }
}
于 2013-03-26T05:53:19.953 回答
0

您可以使用 Jquery index() http://api.jquery.com/index/

$('input').click(function() {
  alert($(this).index());
})
于 2013-03-26T05:52:33.227 回答