0

ドロップダウンメニューからのユーザー入力に基づいて、HTMLテーブルの行を除外しようとしています。私の考えは、最初の行の最初の列がドロップダウンメニューの値と等しくない場合に行を削除することです。ただし、jquery関数をどのように操作したかに応じて、最初の列を削除するか、すべてを削除するか、最初の列を除くすべてを削除するだけです。簡単なことだと思いますが、わかりません。私が使用しているコードは次のとおりです。Jquert関数:

<script type="text/javascript">
    $(document).ready(function () {
        $('tr').show();
        $('#searchBtn').click(function () {
            var weaverSet = $("#weaverSet").val();
            $('tr').each(function () {
                var weaveName = $('td.headerName').text();
                if ($.trim(weaveName) != $.trim(weaverSet)) {
                    $(this).hide();
                }
            });
        });
    });

テーブル:

<table class="dataTable">
<tr>
    <th>
        WS Name &nbsp;
    </th>
    <th>
        M Number
        <br/>
        Bar Code
    </th>
    <th>
        Start Date
        <br/>
        Start Time
    </th>
    <th>
        Length
        <br/>
        Doff Length
    </th>
    <th>
        Name
        <br/>
        End Time
    </th>
    <th>
        B Number
    </th>
    <th>
        Dynamic Value
    </th>  
</tr>

          <tbody>
    @foreach (var item in MVCMasterDetail.DataAccess.ManTracDataProvider.GetTopData())
    { 

        <tr>
            <td class ="headerName">
                @item.WSName
            </td>
            <td>
                @item.MNumber
            </td>
            <td>
                @item.StartDate
            </td>
            <td>
                @item.Length
            </td>
            <td>
                @item.Name
            </td>
            <td>
                @item.bnumber
            </td>
            <td>
                @item.DynamicValue
            </td>
        </tr>
        <tr>
            <td>
            </td>
            <td colspan="99"> //This calls the partial view that renders the detail table inside of it
                @Html.Action("MasterDetailDetailPartial", new { id = item.WorkOrderActualId, LNumber = item.MNumber })

            </td>
        </tr>

    }
             </tbody>

4

2 に答える 2

1

tdsを繰り返してみませんか?

$('td.headerName').each(function () {
   var weaveName = $(this).text();
   if ($.trim(weaveName) != $.trim(weaverSet)) {
       $(this).parent().next().hide();
       $(this).parent().hide();
   }
});
于 2013-01-07T22:20:57.213 に答える
0

主な問題は次の行です。

var weaveName = $('td.headerName').text();

セレクターは、ページ内のそのクラスを持つすべてのTDを返します。要素のコレクションから値( text()など)を取得しようとすると、コレクションの最初の要素の値のみが返されます。

すべてのTRのループ内で、それだけを探したいのtd.headerNameはその行にあります。それを行うために使用できますfind()

$('tr').each(function () {
     /* look for text in this row*/
     var weaveName = $(this).find('td.headerName').text();
     /* no need to trim "weaverset" each time, do it when variable created, saves many function calls*/
     if ($.trim(weaveName) != $.trim(weaverSet)) {
           $(this).hide();
      }
});
于 2013-01-07T22:17:36.550 に答える