2015-03-31 21 views
1

當複選框未選中時,我想刪除未找到文本的行。如果選中複選框,則表格需要返回到其原始狀態。你能推薦什麼?當找到表格中的元素時刪除行

function keySearch() { 
     $('#search').keyup(function (e) { 
      var search = $(this).val(); 
      $('td').removeClass('found'); 
      $('td').each(function (index, element) { 
       if ($(element).html() == search) { 
        $(element).addClass('found'); 
       } 
       if (!$('#checkbox').prop('checked', true)) { 
        $(element).parent().hide(); 
       } 
       else 
       { 
        $(element).parent().show();//how replace remove row? 
       } 
      }); 
     }); 
    } 
+1

你真的需要刪除一行或者只是隱藏它嗎? – 2015-03-31 21:43:23

+1

只是隱藏,y是正確的 – Viktory 2015-03-31 21:44:42

回答

1

而不是使用JavaScript來顯示和隱藏行的,你可以用它來添加或刪除父表.checked CSS類。然後設置.found類,以便僅在.checked類存在時才隱藏行。 您需要將.found類添加到行中,而不是單元格,以使其可以工作。在您的代碼中只需在.addClass('found')之前添加.parent()即可。另外,擺脫第一個if聲明下面的代碼。

這裏的CSS會是什麼樣子:

table.checked > * > tr.found { 
    display: none; 
} 

將需要一些額外的代碼,使複選框的工作。以下是如何與純醇做」的JavaScript(對不起,我不使用jQuery多):

document.querySelector('#checkbox').addEventListener('click', function(e) { 
    if(e.target.checked) 
    document.querySelector('#table').classList.add('checked'); 
    else 
    document.querySelector('#table').classList.remove('checked'); 
}); 

(這裏假設你的表有ID爲‘表’)。

相關問題