如何找出使用jQuery单击哪个表行?

时间:2012-05-06 08:55:51

标签: jquery

我正在使用'live'功能在表格行上点击一些东西,即

$("tr").live('click',function() {
      alert('Some table row is clicked');
});

我想知道点击了哪一行并使用if-else,根据它提供一些自定义提醒。谁能告诉我怎么做?

非常感谢。

编辑1:

有没有办法可以引用函数内单击行的元素?

7 个答案:

答案 0 :(得分:6)

$("tr").live('click', function() {
    if (this.id == "foo") {
        alert('the tr with the foo id was clicked');
    }
});​

如果要查看哪个行号,请使用index

$("tr").live('click', function() {
   if $(this).index() === 2) {
     alert('The third row was clicked'); // Yes the third as it's zero base index
   }
});​

Live demo


<强>更新

$("tr").live('click', function() {
    // "this" is the clicked <tr> element
    // $(this).find('td span') is the spans inside a td inside the clicked <tr>
}

答案 1 :(得分:2)

首先你不应该使用.live():)

why you shouldn't use .live()

你可以改用.delegate()
示例

$(document).delegate("tr", "click", function(e) {
 // write your code here 
});

答案 2 :(得分:2)

让我建议一个简单的方法。假设这是你的表:

<table>
<tr id = '1' class="tr">...</tr>
<tr id = '2' class="tr">...</tr>
<tr id = '3' class="tr">...</tr>
</table>

将它放在你的jQuery代码中:

$(function(){

$('.tr').click(function(){
var row_no = $(this).attr('id');
alert('Row number '+row_no+' was clicked');
});

});

希望这会对你有所帮助。

答案 3 :(得分:1)

演示:http://jsfiddle.net/zJUuX/

HTML:

<table>
    <tr><td>hey</td></tr>
    <tr><td>hi</td></tr>
</table>

Jquery的:

$("table tr").click(function(){
    messages( $(this).index() );
});

    function messages(index) {
        switch(index){
            case 0:
                alert("you clicked 1st row");
                break;
            case 1:
                alert("you clicked 2nd row");
                break;
            default:
                break;
        }
        $("table tr").eq(index).css("background","#ff0");
        $("table tr").eq(index).find("a"); //will find all the nested anchor tags.
    }

你去学习者,现在我将接受我的虚拟点:D。玩得开心。

答案 4 :(得分:0)

您可以使用this访问所点击的元素。

offtopic :$ .live自1.7以来不推荐使用,你应该使用$ .on。有关详细信息,请参阅here

答案 5 :(得分:0)

作为gdoron答案的改进,jQuery的live()已被弃用,请尝试delegateon

$("#mytable").delegate("tr", "click", function(e) {
  if (this == "foo") {
     ....
  }
});

答案 6 :(得分:-1)

//Even row
$("tr:even").click(function() {
    alert('Even');
});

//Odd row
$("tr:odd").click(function() {
    alert('Odd');
});​