2011-06-03 46 views
1

我有一個的index.html頁面的表格:爲什麼鼠標在表格行上單擊時無法獲取行ID?

<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); 
     }); 

但我沒有得到點擊行的行ID(沒有警報),我錯在哪裏?

--- ---解決

我的壞,我都一處空表,這意味着沒有TR可言。這就是爲什麼它不起作用。對不起,打擾了。

+0

你嘗試過警告,看看你得到冒泡? – Joseph 2011-06-03 15:32:21

+0

我不明白...這是一個Firebug問題或jQuery問題嗎?你可以試試「alert(rowId)」來查看它是否有效? – psousa 2011-06-03 15:34:04

+0

@約瑟夫,是的,我也試過警戒,但沒有發生任何事。 – Leem 2011-06-03 15:34:05

回答

5
  1. $ === jQuery
  2. 綁定點擊監聽器的代碼是否在document ready handler中執行?
  3. this.id is sufficient and will work in all browsers.
+0

我已更新我的帖子,我甚至沒有得到警報警報('clicked。'); – Leem 2011-06-03 15:37:21

+0

您是否看到控制檯中有任何錯誤?JS文件的路徑是否正確? – 2011-06-03 15:38:23

+0

我已更新我的帖子,並找到原因,謝謝 – Leem 2011-06-03 15:43:41

1

這似乎是工作就好了... ...這是一個使用警報,而不是執行console.log工作的jsfiddle:

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

基礎上的意見和馬特的答案,應該這樣包裝你的功能:

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

javascript在D OM準備好了,因此處理程序沒有被應用。

+0

謝謝您的意見,我只是找到原因,查看我的更新 – Leem 2011-06-03 15:44:23

0

更改您的事件處理程序

$('.mytable tr').each(function() { 
    $(this).click(function() { 
     var rowId = $(this).attr("id"); 
     alert(rowId); 
    }); 
}); 
+0

感謝您的意見,我只是找到原因,檢查我的更新 – Leem 2011-06-03 15:44:29

1

首先你必須檢查你的js文件的路徑,這是正確與否? 如果這是正確的,那麼我認爲這是在你的腳本沒有任何錯誤.. 我也測試了它...您可以檢查它 Demo

相關問題