2011-07-27 90 views
1

下午,如何判断哪一行被点击?

说我有像这样

<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事件激活,然后使用父母输出索引?

任何想法?

谢谢

+0

我猜它只是在这个问题一个错字,但你不关闭你的'tr'元素。 –

回答

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

这附加的blur事件与type="text"所有input元素。您可能希望缩小该选择器的范围,以便仅在表格中选择输入。

在事件处理程序的功能,它得到最接近tr(即,this第一个祖先元素其是tr,并且得到的该索引)。

这是一个example fiddle显示它的行动。

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

3

误读问题,编辑它!

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

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

$('.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类,方便选择。 另外,在我的例子中,我只捕捉文本字段的模糊事件。

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

通过修改您的意思onchange?

如果是的话,你可以这样做:

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