jQuery добавление строки в таблицу с помощью обработчика click () для tr - PullRequest
3 голосов
/ 22 апреля 2010

У меня проблема с элементом управления, который я создаю, который содержит таблицу, в которой тело можно прокручивать. Строки имеют обработчик функции click (), установленный как:

    /**
     * This function is called when the user clicks the mouse on a row in
     * our scrolling table.
     */
    $('.innerTable tr').click (function (e) {
      //
      // Only react to the click if the mouse was clicked in the DIV or
      // the TD.
      //
      if (event.target.nodeName == 'DIV'  ||
          event.target.nodeName == 'TD'     ) {
        //
        // If the user wasn't holding down the control key, then deselect
        // any previously selected columns.
        //
        if (e.ctrlKey == false) {
          $('.innerTable tr').removeClass ('selected');
        }

        //
        // Toggle the selected state of the row that was clicked.
        //
        $(this).toggleClass ('selected');
      }
    });

Есть кнопка, которая добавляет строки в таблицу, например:

$('#innerTable > tbody:last').append('<tr>...some information...</tr>');

Хотя строки успешно добавлены, по какой-то причине статические строки работают с обработчиком щелчков, а новые добавленные строки - нет. Я что-то упускаю?

1 Ответ

3 голосов
/ 22 апреля 2010

Попробуйте использовать .live () :

$('.innerTable tr').live('click', function (e) { ... });

Он будет привязывать обработчик событий к любым текущим и будущим элементам, соответствующим селектору, добавленному в DOM.

...