我有一些行的表,我使用jQuery的單擊事件適用於紅素我點擊了哪個TD? jQuery的
$("tr").click(function(e)
{
console.log($(this).data("rowid"));
});
這工作正常。其中一個TD,我有一個實際的鏈接,當我點擊鏈接時,仍然可以打印出console.log。如果我點擊鏈接,是否有辦法退出該點擊功能?
我有一些行的表,我使用jQuery的單擊事件適用於紅素我點擊了哪個TD? jQuery的
$("tr").click(function(e)
{
console.log($(this).data("rowid"));
});
這工作正常。其中一個TD,我有一個實際的鏈接,當我點擊鏈接時,仍然可以打印出console.log。如果我點擊鏈接,是否有辦法退出該點擊功能?
呼叫event.stopPropagation();
$('td a').click(function(event) {
event.stopPropagation();
});
這將防止父<tr>
元素的click事件從當你點擊一個鏈接的範圍內,關於發射一個<td>
。
這裏有一個工作示例:http://jsfiddle.net/ALUZy/
你也許應該補充下不應適用你的方法一類的類型
我會改變你的邏輯來檢測柱點擊,並檢查被點擊的列後,該行執行你的console.log。
$('td').click(function(){
if ($(this).not('a')){
console.log($(this).closest('tr').data("rowid"));
}
});
你可以做這樣的事情:
$("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"))
跳過任何錨:
$("tr").click(function(e)
{
if (e.target.tagname.toLowerCase() == 'a')
return; // Do nothing.
console.log($(this).data("rowid"));
});
這個偉大的工作,謝謝。這個時間限制的東西在5分鐘之內會接受 – Ronnie