我有一个表格,例如如下:
<table>
<thead>
.....
</thead>
<tbody id="rptBody">
<tr><td>Row 1</td></tr>
<tr class="hidden"><td>Row 2</td></tr>
<tr class="hidden"><td>Row 3</td></tr>
<tr><td>Row 4</td></tr>
</tbody>
</table>
我想将$('#rptBody')。html()传递给另一个打印所选行的函数(即class&lt;&gt; hidden)。
我试过了:
$('#rptBody tr:not(.hidden)').html()
但是它只返回第一个非隐藏行的列。如何过滤tbody.html以仅包含非隐藏行?
答案 0 :(得分:2)
我想如果你想要html(而不仅仅是一组匹配的dom对象),你可能需要克隆原始文件。像这样的东西
x=$('#rptBody').clone();
x.find('.hidden').remove();
alert(x.html());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<thead>
</thead>
<tbody id="rptBody">
<tr><td>Row 1</td></tr>
<tr class="hidden"><td>Row 2</td></tr>
<tr class="hidden"><td>Row 3</td></tr>
<tr><td>Row 4</td></tr>
</tbody>
</table>
&#13;
答案 1 :(得分:0)
您应该使用过滤器然后克隆。由于过滤器的负载较少,因此克隆整个html。
var matching = $('#rptBody tr').filter(function(){
return $(this).not('.hidden');
});
alert(matching.html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<thead>
</thead>
<tbody id="rptBody">
<tr><td>Row 1</td></tr>
<tr class="hidden"><td>Row 2</td></tr>
<tr class="hidden"><td>Row 3</td></tr>
<tr><td>Row 4</td></tr>
</tbody>
</table>
答案 2 :(得分:0)
理解这一点很重要,那么你想做什么:)
$(&#39; #rptBody tr:not(.hidden)&#39;)
返回jQuery对象数组。
答案 3 :(得分:0)
$('#rptBody tr').each(function(){
if ( $(this).hasClass('hidden') )
{
console.log( $(this).html() );
}
else
{
console.log('Nope.');
}
})
这将使您能够控制两种情况:)。