在单元格元素上绑定事件的最佳方法

时间:2010-10-08 08:05:18

标签: javascript javascript-events jquery

我有一个由JS脚本填满的网页,它创建了很多HTML表格。

创建的<table>个数可以在1到1000之间变化,每个中包含100个单元格。

我的问题是:如何有效地绑定这些表上的点击?我应该将<table>的每个单元格上的点击或直接绑定到<table>本身,并检索在绑定函数中单击的单元格吗?

或者你有另外一个想法吗?

由于

P.S:我正在使用IE6 +

4 个答案:

答案 0 :(得分:5)

我建议您使用delegate

$("table").delegate("td", "click", function(){
    alert($(this).text()); // alert td's text.
});

委托只会绑定一个事件,即上下文(在本例中为<table>)。

答案 1 :(得分:3)

由于你似乎使用jQuery,你应该在表上使用delegate()方法,例如:

$('table').delegate('td', 'click', function() {
    // $(this) refers the the clicked cell
});

这会将一个事件处理程序绑定到表并捕获冒泡的单击事件。

绑定如此多的事件处理程序,即每个单元格的事件处理程序,确实不是一个好主意,尤其不是在IE中(出于性能原因)。

答案 2 :(得分:0)

在表上绑定事件以加快执行速度并获取该函数内的单元格详细信息。

答案 3 :(得分:0)

你可以在这里找到一个类似的toppic: large table with lots of events, is using event bubbling more effecient?

我会用这种方式:

$("table#yourTable").click(function(evt){
   if($(evt.target).is('td')) {
     //do whatever you want to do
   }
})