我有以下html表格布局:
<table id="mytable">
<tbody>
<tr>
<td><input type="text" value="" /></td>
<td><input type="text" value="" /></td>
<td><input type="text" value="" /></td>
<td>Some cell text</td>
<td></td>
<td><input type="text" value="" /></td>
<td></td>
</tr>
<tr>
<td><input type="text" value="" /></td>
<td><input type="text" value="" /></td>
<td>Some cell text</td>
<td></td>
<td>Some cell text</td>
<td><input type="text" value="" /></td>
</tr>
</tbody>
</table>
我需要知道相应行的当前输入字段索引,同时单击任何输入字段但无法找到获取它的方法。我可以通过以下公式获得每行的输入字段总数(长度):
var thisRow = $(this).closest('tr');
var inputLength = thisRow.find('input[type="text"]').length;
例如,第一行的inputLength
为4
,第二行为3
。但是当用户点击第一行的第二个输入字段(它应该是1)时,如何获取输入索引?
[注意:我不能使用td
索引替代input
字段索引,因为您可能会发现某些td
没有input
领域。因此,如果我运行for loop
,则无法按预期执行。]
答案 0 :(得分:3)
您可以使用index()
方法,如下所示:
$(':input').on('click', function() {
console.log($(this).closest('tr').find(':input').index(this));
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="mytable">
<tbody>
<tr>
<td>
<input type="text" value="" />
</td>
<td>
<input type="text" value="" />
</td>
<td>
<input type="text" value="" />
</td>
<td>Some cell text</td>
<td></td>
<td>
<input type="text" value="" />
</td>
<td></td>
</tr>
<tr>
<td>
<input type="text" value="" />
</td>
<td>
<input type="text" value="" />
</td>
<td>Some cell text</td>
<td></td>
<td>Some cell text</td>
<td>
<input type="text" value="" />
</td>
</tr>
</tbody>
</table>
&#13;
答案 1 :(得分:1)
尝试使用jQuery索引,但不能使用System.out.println(fruits[1].length);
本身,而是使用input
父级。
td
上面的id将是var thisRow = $(this).parent('td');
var id = $('td').index(thisRow);
的索引,因此输入索引。
答案 2 :(得分:1)
请查看以下解决方案
$('input[type="text"]').on('keypress', function(e){
$this = $(this);
var td = $this.parents('td');
var tr = $this.parents('tr');
var col = td.parent().children().index(td);
$('div').html('you are changing the value of column.#. '+col)
})
答案 3 :(得分:0)
试试lodash.js。例如:
<强> HTML 强>
var listItem = document.getElementById("bar");
alert("Index: " + $("li").index(listItem));
<强> JS:强>
{{1}}
答案 4 :(得分:0)
这有效:
<script>
$(document).ready(function(){
$('input[type="text"]').click(function(){
var rowIndex = $(this).parent().parent().index('tr');
if (rowIndex == 0) {
var inputIndex = $('tr:eq(0) input[type="text"]').index(this);
}
else if (rowIndex == 1) {
var inputIndex = $('tr:eq(1) input[type="text"]').index(this);
};
});
});
</script>
答案 5 :(得分:0)
尝试使用.each(function(index, element){})
附加click
事件处理程序,在index
处理程序的input
元素的click
引用
$("input").each(function(index) {
this.onclick = function() {
console.log(index)
}
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="mytable">
<tbody>
<tr><td><input type="text" value="" /></td><td><input type="text" value="" /></td><td><input type="text" value="" /></td><td>Some cell text</td><td></td><td><input type="text" value="" /></td><td></td></tr>
<tr><td><input type="text" value="" /></td><td><input type="text" value="" /></td><td>Some cell text</td><td></td><td>Some cell text</td><td><input type="text" value="" /></td></tr>
</tbody>
</table>
&#13;