2014-02-28 191 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/

相關問題