Почему я не могу получить идентификатор строки при щелчке мышью по строке таблицы? - PullRequest
1 голос
/ 03 июня 2011

У меня есть index.html страница с таблицей:

<body>
      <table class="mytable">
          <tr id="1">
              <td>John</td>
              <td>123</td>
          </tr>
           <tr id="2">  
              <td>Kate</td>
              <td>456</td>
          </tr>
      </table>

  <script src="my.js"></script>
  </body>

Я включил my.js на своей странице, я попытался получить id строки, щелкнувшей мышью, следующим образом в my.js

$('.mytable tr').click(function(e){
                   alert('clicked.'); //even did not get alert here.
                   var rowId = $(this).attr('id');
               alert(rowId);
        });

Но я не получил идентификатор строки по нажатой строке (без предупреждения), где я ошибаюсь?

--- Решение ---

Мое плохое, у меня есть одно место, которое опустошило стол, что означает, что нет вообще. вот почему это не работает. Извините за беспокойство.

Ответы [ 5 ]

5 голосов
/ 03 июня 2011
  1. $ === jQuery?
  2. Достаточно ли кода, связывающего прослушиватель кликов, выполненный в обработчике готовности документов ?
  3. this.id, и будет работать во всех браузерах.
1 голос
/ 03 июня 2011

сначала вы должны проверить путь к файлу js, что он правильный или нет? если это правильно, то я думаю, что нет никаких ошибок в вашем скрипте .. Я также проверил это ... вы можете проверить это Демо

1 голос
/ 03 июня 2011

Это работает для меня .

Что сделать вы получаете, если не идентификатор?

Наиболее распространенная проблема заключается в том, что обработчик событийне привязывается к элементу, для которого наиболее распространенным решением является обернуть его в $(document).ready(){ ... } так, чтобы он ожидал загрузки DOM, прежде чем связываться с элементами.

(Есть также относительно недавний .live() функция, которая связывается с элементами по мере их добавления в жизни документа .)

1 голос
/ 03 июня 2011

Это, кажется, работает просто отлично ... Вот рабочий JSFiddle, который использует alert вместо console.log:

http://jsfiddle.net/gfosco/KtYkJ/

Основываясь на комментариях и ответе Мэтта, вы должны обернуть свою функцию следующим образом:

$(document).ready(function() {
    $('.mytable tr').click(function(e){
               var rowId = $(this).attr('id');
           alert(rowId);
    });
});

Javascript выполнялся до того, как DOM был готов, и поэтому обработчик не применялся.

0 голосов
/ 03 июня 2011

Измените ваш обработчик событий на

$('.mytable tr').each(function() {
    $(this).click(function() {
        var rowId = $(this).attr("id");
        alert(rowId);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...