2011-06-07 58 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()