2011-09-01 62 views
4

我有一些行的表,我使用jQuery的單擊事件適用於紅素我點擊了哪個TD? jQuery的

$("tr").click(function(e) 
{ 
    console.log($(this).data("rowid")); 
}); 

這工作正常。其中一個TD,我有一個實際的鏈接,當我點擊鏈接時,仍然可以打印出console.log。如果我點擊鏈接,是否有辦法退出該點擊功能?

回答

3

呼叫event.stopPropagation();

$('td a').click(function(event) { 
    event.stopPropagation(); 
}); 

這將防止父<tr>元素的click事件從當你點擊一個鏈接的範圍內,關於發射一個<td>

這裏有一個工作示例:http://jsfiddle.net/ALUZy/

+0

這個偉大的工作,謝謝。這個時間限制的東西在5分鐘之內會接受 – Ronnie

2

你也許應該補充下不應適用你的方法一類的類型

0

我會改變你的邏輯來檢測柱點擊,並檢查被點擊的列後,該行執行你的console.log。

$('td').click(function(){ 
    if ($(this).not('a')){ 
     console.log($(this).closest('tr').data("rowid"));   
    } 
}); 
0

你可以做這樣的事情:

$("tr").each(function(t){ 
    if($("a", this).length == 0){ 
     $(this).click(function(e) { 
      console.log($(this).data("rowid")); 
     } 
    } 
}); 

要只適用於該次點擊的功能,不包含錨錶行。如果你想它仍然與<a>適用於該行,除了TD,使用$("td").each(...),而是和$(this).parent().data("rowid"))

2

跳過任何錨:

$("tr").click(function(e) 
{ 
    if (e.target.tagname.toLowerCase() == 'a') 
     return; // Do nothing. 
    console.log($(this).data("rowid")); 
});