2011-06-14 30 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

相关问题