我需要通过单击一个链接来过滤某个表行。
function filterRows(statusName) {
$("#mainTable > tbody > tr").find(statusName).each( function () {
alert($(this));
//the alert is not shown
});
}
<a class="rejected" href="#" onclick="filterRows('rejected');">rejected</a>
<a class="new" href="#" onclick="filterRows('new');">new</a>
<table id="mainTable">
<thead>
<tr>
<td>col1</td>
<td>col2</td>
</tr>
</thead>
<tbody class="Content">
<tr class="rejected">
<td>data1</td>
<td>data12</td>
</tr>
<tr>
<td>data13</td>
<td>data15</td>
</tr>
<tr class="new">
<td>data16</td>
<td>data18</td>
</tr>
</tbody>
但是即使是alert($(this))也不能工作,有什么建议吗?
发布于 2012-07-10 15:53:26
我对选择器进行了如下修改:
function filterRows(statusName) {
$("#mainTable tbody tr."+statusName).each( function () {
console.log(this);
$(this).hide();
});
}它可以进一步简化为:
function filterRows(statusName) {
$("#mainTable tbody tr."+statusName).hide();
}实现过滤器的
但是,如果您尝试基于存储为类的数据实现jQuery过滤器,则可以执行以下操作:
function filterRows(statusName) {
$("#mainTable tbody tr."+statusName).show();
$("#mainTable tbody tr").not("."+statusName).hide();
}这将显示与“statusName”匹配的行,但同样重要的是,它将隐藏不匹配的行。记得要添加清除过滤器的功能!
发布于 2012-07-10 15:44:39
Guy David是对的--把你的HTML改成:
<table id="mainTable">
<thead>
<tr>
<td>col1</td>
<td>col2</td>
</tr>
</thead>
<tbody>
<tr class="rejected">
<td>data1</td>
<td>data12</td>
</tr>
<tr>
<td>data13</td>
<td>data15</td>
</tr>
<tr class="new">
<td>data16</td>
<td>data18</td>
</tr>
</tbody>
...发布于 2012-07-10 15:47:39
或者:
$('a').click(function(e){
$('.'+e.target.className).not('a').hide();
});https://stackoverflow.com/questions/11408627
复制相似问题