代码之家  ›  专栏  ›  技术社区  ›  Arnaud F.

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

  •  2
  • Arnaud F.  · 技术社区  · 14 年前

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

    <table> 创建的大小可以在1到1000之间,每个单元格有100个。

    我的问题是:如何有效地绑定点击这些表?我应该在每个单元格上绑定 <表& gt; 或者直接到 <表& gt; 并检索在绑定函数中单击的单元格?

    或者你有别的主意?

    谢谢

    P.S:我用的是IE6+

    4 回复  |  直到 14 年前
        1
  •  5
  •   Reigel Gallarde    14 年前

    我建议你用 delegate .

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

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

        2
  •  3
  •   Felix Kling    14 年前

    因为您似乎使用jquery,所以应该使用 delegate() 表上的方法,例如:

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

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

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

        3
  •  0
  •   Praveen Prasad    14 年前

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

        4
  •  0
  •   Community gkalpak    7 年前

    你可以在这里找到一个类似的顶级: 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
       }
    })