2013-10-09 46 views
0

我有一個HTML的結構如下所示:走幾級了DOM層次結構的含錶行

<tr class = "@rowOrdinal" id = "...">        
    <td> 
     <a href = "#"> 
      <img src = "/Content/updateIcon.gif" class = "updateResourceImageButton" id = "..." /> 
     </a> 
     &nbsp; 

     <a href = "#"> 
      <img src = "/Content/cancelIcon.gif" class = "cancelImageButton" /> 
     </a> 
     &nbsp; 
    </td> 

    <td class = "hiddenColumn" id = ...>...</td> 
    <td class = "resourceKeyColumn" id = ...>...</td> 
    ... and so on... 

當點擊更新鏈接,我想獲得的參照行,即更新超鏈接所在的tr元素。

因此,在下面的事件監聽器中,我想在DOM層次結構中添加幾個級別。我可以使用簡單的JavaScript並使用while循環來獲取parentNode,但我將如何使用jQuery來做到這一點?

function WireHandlers() { 
    $('.updateResourceImageButton').click(UpdateResourceLinkClickedHandler); 
} 

function UpdateResourceLinkClickedHandler() { 
    // how do I get a reference to the tr that contains 
    // the hyperlink which is the source of this event? 
} 

$(document).ready(function() { WireHandlers(); }); 

回答

3

您正在尋找.closest()方法:

function UpdateResourceLinkClickedHandler() { 
    var $tr = $(this).closest('tr'); 
} 
+0

F *國王WOW沒有用它! jQuery是fa王輝煌!這就是*我正在尋找的東西。非常感謝。 :-) –

+0

@ WaterCoolerv2不客氣:) – undefined

+0

@ WaterCoolerv2,請接受答案,如果它適合你:) – funkwurm

1
function WireHandlers() { 
    $('.updateResourceImageButton').click(function(){ 

     var trParent = $(this).parent().parent(); 
     UpdateResourceLinkClickedHandler(); 
    }); 
} 

不知道爲什麼你需要父母TR參考,所以在我的例子

+0

你也可以做var trParent = $(this).parent(「tr」); – gurvinder372

+0

非常感謝gurvinder。這很簡單。我喜歡jQuery。 :-) –