2011-06-07 91 views
0

我有一個表格,其中包含另一個表格。這是非常醜陋的,但這是我現在堅持的。限制點擊某些表格行

內部表格包含一系列行,每行都包含一個鏈接。當單擊其中一行時,我會根據該行中包含的鏈接在DIV內打開一個外部頁面。然後,我將樣式應用到被點擊的行,並從內部表中的其他行中刪除相同的樣式。

這裏是做它的代碼:

(function($) { 
$(function() { 
$('tr:has(.load_link)') // select tr elements that have .load_link descendants 

.click(function(e) { 
    e.preventDefault(); 

    var link = $(this).find('a.load_link'); 

    $.address.value(link.attr('href')); 

    $('#content').load(link.attr('href')); 
    $(this).removeClass('rownotselected').addClass('rowselected') 
      .siblings() 
       .removeClass("rowselected").addClass("rownotselected"); 
       return false; 
}); 


}); 
})(jQuery); 

它完美。問題在於,如果在外部表中的任何位置點擊鼠標,而不是在內部表中的其中一個具有附加load_link類的行上,則整個外部表被賦予類「rowselected」。有沒有辦法阻止這些點擊觸發類更改,並將其限制爲應該觸發它的行?

非常感謝。

回答

1

這樣的事情呢?

$('table#innerTable tr:has(.load_link)').click(function(e) { 
    /* snip */ 
}); 
+0

是的,這個!非常感謝。 – Ross 2011-06-07 15:43:59

1

您可以使用以下方法來只選擇最接近的錶行點擊事件綁定到:

$('.load_link').closest('tr') 

在嵌套表的情況下,只能選擇直接包含.load_link行和忽略DOM樹的更上方。請參閱jQuery文檔中的.closest()