2011-06-14 38 views
3

我不知道這文章的標題是有道理的,但這裏是我工作的一個樣本:使用jQuery找到一個<tr>是具有特定屬性附加傷害後一排在它

<tbody> 
    <tr class="classRow" bgcolor="#EFE5D3" style="font-weight: bold;"> 
     <td width="35px"><a class="classEditLink" name="33" href="#">Edit</a></td> 
     <td width="20px"><input type="checkbox" class="chkSelectToDelete" name="deleteClasses[]" value="33" /></td> 
     <td>CLASS1234</td> 
     <td>Class description</td> 
    </tr> 
    <tr class="classDocsRow noDocs"> 
     <td colspan="4"> 
      <strong>No documents are currently associated with this class.</strong> 
     </td> 
    </tr> 
</tbody> 

我需要通過使用前一行的第一個<td><a>的name屬性找到它來刪除第二行。該僞代碼會是這樣的

$('.classRow a[name="' + classID + '"]').parent().parent().next().remove() 

我不知道這是正確的jQuery的語法(如,它不工作),但希望你明白了吧:選擇的「起點」是<a>標記的名稱屬性,我需要刪除以下行。 <a>標籤的名稱屬性是頁面上給定的<tbody>中唯一的唯一屬性(不包括該行中的第三個和第四個<td>,但您明白了)。

什麼是正確格式化/語法化的jQuery選擇器來做到這一點?

回答

6

如果我正確理解你的問題:

$('tr:has(a[name="33"]) + tr').remove(); 

鏈接到相應的JQuery文檔:

+0

很好的解決方案:d – ArtoAle 2011-06-14 12:40:57

+0

謝謝,丹尼爾 - 當我把工作,在我的$。阿賈克斯()調用之前 - 我想我有別的事情,就會向阻止其在我需要的地方工作。 – marky 2011-06-14 12:56:01

0

如果我理解正確的問題,那麼你想是這樣的:

$(".classRow a[name=" + className + "]").closest("tr").next().remove();

看到一個例子小提琴here

+0

使用單引號外部包裝:d – ArtoAle 2011-06-14 12:37:16

0

你可以嘗試

$('.classRow a[name="' + classID + '"]').parents("tr").next().remove(); 

,如果它不能正常工作,請提醒的classID來檢查它是否可以

0

你的樣品的作品,只要確保類代碼被設置:working fiddle

0

這並不直接回答你的問題,而只是一個善意的提示...如果你有一個表列出了每一行中的類,那麼將每個單獨的類的所有內容都放在同一行內更有意義。因此,文檔容器實際上屬於與文檔關聯的類行。

的好處是:

  • 語義和關係協會
  • 更容易引用父/姐妹/子元素

方式然後,所有你需要做的就是這樣的事情:

$('.classRow a[name="' + classID + '"]').parent('classRow').find('.classDocs').remove(); 
+0

如果我理解你的觀點,Kon,我最初是以類錶行的嵌套表格的形式使用它。這成爲一個jQuery(和PHP)的噩夢(至少對於這個jQuery/PHP noob)。在代碼重寫之後,將每個類和其相關文檔放在單獨的標籤中,對我來說管理變得更容易。 – marky 2011-06-14 13:00:42

+0

給他/她自己的。但總的來說,你想建立一個更有意義的結構。 :) – Kon 2011-06-14 13:03:52

0

此代碼適用於我(在您的HTM上測試過上述L):

$('.classRow a[name="' + classID + '"]') 
    .closest('tr') 
    .next() 
    .remove(); 

而且我不知道究竟在何處這段代碼在你的榜樣執行,但如果它應該發生的「負載」,你需要等待DOM做好準備:

$(function() { 
    // the code snippet here 
}); 
+0

不,它在$ .ajax()中調用一個從腳本中刪除文檔記錄的php腳本的「成功」部分非常實用。 – marky 2011-06-14 13:02:58

相關問題