0

リンクをクリックして特定のテーブル行をフィルタリングする必要があります。

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))いません。助言がありますか?

4

3 に答える 3

2

セレクターを次のように変更しました。

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-10T07:53:26.247 に答える
0

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-10T07:44:38.550 に答える
0

また :

$('a').click(function(e){

    $('.'+e.target.className).not('a').hide();

});
于 2012-07-10T07:47:39.313 に答える