2014-02-28 192 views
1

我必须标记表中的所有行(并稍后更改代码以删除行)。使用具有特定值的单元格查找行

表结构如下:

<table class="table table-striped table-condensed" id="buckettable"> 
      <thead> 
       ...cut out 
      </thead> 
      <tbody> 
       <tr class="success"> 
        <td><input class="fld-bucketno" type="checkbox" name="bucket" value="158bf61f-8f66-4dee-9ff6-b9d1f6d4b840" /></td> 
        <td class="text-right"> 
         <a class="bucketNo" href="/Sim/Staging/1212">1212</a> 
        </td> 

我所感兴趣的是在TD锚的价值 - 第二最后一行。

我得到一个要删除的id的json列表。首先我标记它们,然后更改代码以删除它们。至少这是这个想法。介意我 - 我知道了很多节目,但JavaScript是对我来说是未知的土地;)

到目前为止我的代码是:

success: function (resp) { 
       var table = $('#buckettable').find('tbody')[0]; 

       var length = resp.length; 
       for (var i = 0; i < length; i++) { 
        var bucketNo = resp[i]; 
        var rows = table.children.length; 
        for (var j = 0; j < rows; j++) { 
         var row = table.children[j]; 
         var bucket = row.find('.bucketNo').text(); 
         if (bucket == bucketNo) { 
          alert(bucket); 
         } 
        } 
       } 
       $('#cleanup').modal('hide'); 

,我没有过滤的行。我愿意接受任何明智的其他方法 - 希望能教会我很多。

在上面的代码中,我设法得到该行...但随后find('。bucketNo')失败,并且出现Object#没有方法找到....因为我使用该方法在一个表格上。指向文档非常欢迎,尤其是除了答案之外。

如果有更好的方法可以告诉我。我被告知,通过ID搜索更快(显然),但不知何故我不确定 - 我应该在每一行上设置一个编码ID(bucket-xxx,xxx是数字)吗?

回答

2

有一个更简单的方法来做到这一点。

var targetBucketNo = 1212; 
$('#buckettable a.bucketNo') 
    .filter(function(item) { 
    return item.text() == targetBuvketNo; 
    }) 
    .parent() 
    .remove(); 

更详细地解释。以下代码将获取#buckettable表中的bucketNo类的锚点。

$('#buckettable a.bucketNo') 

过滤器将过滤结果为那些有目标斗数

.filter(function(item) { 
    return item.text() == targetBuvketNo; 
}) 

删除将删除元素

.remove(); 

您可以.addClass('your-class-name')取代.remove(),如果你想添加一个班级。这会将其添加到td元素,因此您应该在addClass之前添加.parent()

+0

并以例如改变该行的一类?如下所示:我想要调试以向具有该行的TS添加一个类?而男人,我感到震惊 - 这是一个更容易;) – TomTom

+0

@tomtom增加了澄清和增加一个类,而不是删除 –

+0

谢谢。我感到认真......需要一个很好的教程和网站来学习jQuery。这是非常优雅的。 – TomTom

1

您正在访问原生JavaScript children,因此find()不是函数。然而,你可以通过使用jQuery的过滤方法周围有很多的你正在使用的原生功能跳过:

var $aTag = $('#buckettable').find('tbody td a.bucketNo').filter(function() { 
    return $(this).text() == bucketNo 
}); 
alert($aTag.text()); 
1

您还可以循环使用类“bucketNo”,然后将所有环节看,如果该ID是在你的阵列。在此之后获得包含TR和删除或添加类或某事:

var resp = [2323,5656] 

$('a.bucketNo').each(function() { 
    if(resp.indexOf(parseInt($(this).text())) != -1) 
     $(this).closest('tr').addClass('del'); 
}); 

http://jsfiddle.net/44cEt/

相关问题