我有一个包含很多行的表。第一行是标题。
如果任何行没有给定文本,我想删除所有行。
<tr>
<td id="1" class="links">Madia</td>
<td id="" class="edit_client" >Press</td>
</tr>
<tr>
<td id="2" class="td_link" >Nagara </td>
<td class="td_link" id="11" class="edit_client">KR Pura</td>
</tr>
我想删除所有的tr,如果它的任何td没有给出文字说“me hussy”。
$('tr').each(function () {
});
我不希望删除第一行,因为它的标题。所以功能应该从第二行开始检查。
答案 0 :(得分:4)
尝试这样做
$('table tr:gt(0)').each(function() {
if ($('td:contains("me hussy")', this).length == 0) $(this).remove();
});
修改强>
感谢mesiesta :gt(0)
修改强>
关于OP的评论
var name = "me hussy";
$('table tr:gt(0)').each(function() {
if ($('td:contains("'+ name +'")', this).length == 0) $(this).remove();
});
答案 1 :(得分:3)
var name="me hussy";
$('tr').not(':first').not($('tr').find('td:contains('+name+')').parent()).remove()
答案 2 :(得分:3)
试试这个
$('tr:not(:contains("me hussy")):not(:first)').remove();
答案 3 :(得分:0)
您应该使用thead
和tbody
来分隔行,但这应该有效;
$(function() {
var $table = $('table#byID');
var $bodyRows = $table.find('tr').not(':first'); // Exclude the first row
var hasEmptyTds = $bodyRows.find('td').filter(function() { // Filter by text, could also use the :contains selector
return ($(this).text() != 'me hussy')
}).length > 0;
if (hasEmptyTds) {
$bodyRows.remove(); // Remove all table body rows
}
});
答案 4 :(得分:0)
如果需要重新使用该功能,请将其包装在函数中,否则您只需替换下面jQuery行中的mustMatchString
即可。要删除第一个项目,请使用jQuery .slice
方法。
function runRemoval(mustMatchString) {
jQuery('tr').slice(1).each(function() {
if(!jQuery('td:contains("' + mustMatchString + '")', this).length) {
jQuery(this).remove();
}
});
}
runRemoval('me hussy');