Лучший способ привязать событие к элементу ячейки - PullRequest
2 голосов
/ 08 октября 2010

У меня есть веб-страница, заполненная сценарием JS, который создает множество таблиц HTML.

Количество созданных <table> может варьироваться от 1 до 1000 со 100 ячейками в каждой из них.

Мой вопрос: как эффективно связать клик по этим таблицам? Должен ли я связать щелчок по каждой ячейке <table> или непосредственно с <table> и получить ячейку, по которой щелкнули в функции привязки?

Или у тебя есть другая идея?

Спасибо

P.S .: Я использую IE6 +

Ответы [ 4 ]

5 голосов
/ 08 октября 2010

Я предлагаю вам использовать делегат .

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

делегат просто связывает одно событие, и это с контекстом (в данном примере, <table>).

3 голосов
/ 08 октября 2010

Поскольку кажется, что вы используете jQuery, вы должны использовать метод delegate() для таблицы, например ::10000 *

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

Это связывает один обработчик событий с таблицей и фиксирует всплывающие события щелчка.

Привязка такого количества обработчиков событий, то есть обработчиков событий к каждой ячейке, действительно не очень хорошая идея, особенно в IE (по соображениям производительности).

0 голосов
/ 08 октября 2010

Вы можете найти подобный топик здесь: большая таблица с большим количеством событий, использует ли событие более эффективное событие?

я бы использовал этот способ:

$("table#yourTable").click(function(evt){
   if($(evt.target).is('td')) {
     //do whatever you want to do
   }
})
0 голосов
/ 08 октября 2010

событие связывания с таблицей для более быстрого выполнения и получения сведений о ячейке внутри этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...