2009-10-22 49 views
2

我有一個函數調用TD中的鏈接點擊。點擊後,我將DOM返回到鏈接所在的TR,然後創建一個新的TR。大多數方法來引用jQuery中新創建的對象?

到目前爲止這麼好。

現在我已經創建了新的TR,其中有TD,現在最好指的是新創建的TD。或者,我是否需要重新回到從原始點擊對象創建的新TD?

$("td.expandable a").click(function(){ 
    // figure out the number of columns we need to span 
    var colspan; 
    colspan = $(this).parents("tr").children("td").size(); 

    // insert the new TR 
    $(this).parents("tr").after("<tr><td colspan=' & colspan & '></td></tr>"); 

    // **what syntax would I use here to refer to the above made TD?** 

    return false; 
}); 

回答

1
$("td.expandable a").click(function(){ 
     // figure out the number of columns we need to span 
     var colspan = $(this).parents("tr").children("td").size(), 
      tr = $("<tr><td colspan=' & colspan & '></td></tr>"); 

     // insert the new TR 
     $(this).parents("tr").after(tr); 

     // **what syntax would I use here to refer to the above made TD?** 
     tr.find('td') 

     return false; 
}); 

您也可以或許替代parentsclosest如果您要更新一個 TR。 。另一種還更手動的方式將是做... $(this).parents('tr').next().find('td')

+0

不會tr.find('td')批處理新創建的TR的所有實例嗎?在我的情況下,我們可能會插入一堆這些,只想匹配我剛創建的那個。 我可能會誤解'父母'。是否將該對象的父TR或全部父TR作爲數組返回?如果是後者,我認爲我需要最接近的。 – 2009-10-23 00:01:01

+0

啊,確實......我需要使用'最接近'而不是'父母',因爲我只有一個單親。 另外,在第二次閱讀時,我現在意識到'tr'不是一個字符串,而是一個實際的jquery對象,因此確實會匹配那個特定的對象。謝謝你! – 2009-10-23 00:04:17

0

insertAfter()包()是方便這種類型的事情:

$('td.expandable a').click(function() { 
    var $parent = $(this).parents('tr'); 
    var colCount = $parent.children('td').size(); 
    var $td = $('<td colspan=' + colCount + '></td>'); 
    $td.insertAfter($parent).wrap('<tr></tr>'); 
    return false; 
}); 

我用字符串連接符「+」 。 「&」用於整數計算按位與。