同一TR点击中的不同处理程序

时间:2012-03-14 03:35:41

标签: jquery

$j('table#thisOne tr:gt(0)').hover(function () {
   if ($j(this).next().length != 0) {
     $j(this).find('td:not(:first-child)').css("background", "#f60").css("cursor", "pointer");
   }
}, function () {
   $j(this).find('td').css("background", "").css("cursor", "auto");
});

上面的代码工作正常,即在第2行到第二行和第二列之间悬停。

以下是处理该表的点击事件:

$j('body').delegate("#thisOne tr:gt(0)", 'click', function () { 
    //I want to do something if second column onward clicked, but not first column 
    //which is a checkbox for other handler.
});

如果第1列有复选框,我如何区分单击复选框和整行。因为我想在column1和列的其余部分之间使用不同的处理程序。

TIA。

1 个答案:

答案 0 :(得分:1)

最简单的方法是利用stopPropagation。基本上,创建tr click处理程序,然后为第一列创建更具体的处理程序。像这样:

$('tr').click(function() {
  // handler1
});

$('tr .col1').click(function(event) {
  // handler2
  event.stopPropagation(); // handler1 will not be called now
});