如何判断单击了哪一行?

时间:2011-07-27 15:15:17

标签: javascript jquery html

下午,

说我有一张像这样的桌子

<table id="foo">
  <tr><td><!-- label --><!-- textbox --></td><tr>
  <tr><td><!-- label --><!-- textbox --></td><tr>
  <tr><td><!-- label is bar --><!-- textbox --></td><tr>
  <tr><td><!-- label --><!-- textbox --></td><tr>
  <tr><td><!-- label --><!-- textbox --></td><tr>
</table>

我怎样才能在JQuery中确定修改了文本框的行的索引(模糊)?因此,如果用户将值添加到第三行的文本框中(“label is bar”),我可以提醒行索引(在这种情况下为2)?

我假设我得到了表格id,在tr上执行了每个,然后使用子节点找到文本框,当该子节点激活onblur事件时,我们然后使用parent输出索引?

有什么想法吗?

由于

5 个答案:

答案 0 :(得分:3)

误读了这个问题,编辑它!

$('#foo tr td').click(function() {
    alert($(this).index());
});

答案 1 :(得分:3)

$("input[type=text]").blur(function() {
    alert($(this).closest("tr").index());
});

这会将blur事件附加到input的所有type="text"元素。您可能希望缩小该选择器以仅选择表中的输入。

在事件处理函数中,它获取最接近的tr(即this的第一个祖先元素,即tr,并获取其索引。 / p>

这是example fiddle显示它的实际效果。

如另一个答案中所述,您实际上可能正在寻找change事件,而不是您在问题中所说的blur事件。当输入的值实际发生变化时,change事件将触发,而不是每当它失去焦点时。如果是这种情况,只需将blur更改为change

答案 2 :(得分:1)

$('#foo tr').click(function(){
   console.log($(this).index());
})

答案 3 :(得分:0)

您应该为正确的事件添加处理程序,例如模糊或任何你想要的,输入字段和处理程序内部使用父级(如你所说)找到行(tr)。 e.g。

$('.testFieldsClass').blur(function() {
    //first parent is td, second is tr take it and do whatever!
    var currentTR = $(this).parent().parent();

    //... do something in curretnTR
});

注意:在我的示例中,我假设所有文本字段都有一个名为testFieldsClass的类,对于选择器更容易。 另外,在我的例子中,我只捕捉文本字段的模糊事件。

答案 4 :(得分:0)

修改后你的意思是改变?

如果是,你可以这样做:

$("#foo input").change(function(){
  alert($('#foo td').index($(this).parent()));
});