2017-11-30 20 views
0

要素の内容を完全に一致させて要素を選択すると、構文の問題が発生します。その内容の完全一致で要素を選択する構文

$(document).ready(function() { 
    $("#scorecardId").change(function() { 
     var value = $(this).val().toLowerCase(); 
     $("#myTable tr").filter(function() { 
      //filters by the 8th column scorecard 
      $(this).toggle($(this).children(":eq(8)").text().toLowerCase().indexOf(value) > -1) 
     }); 
    }); 
}); 

HTML

<table class="table table-condensed table-hover table-responsive table-striped"> 
<tr> 
    <th>Edit</th> 
    <th> 
     <a href="@Html.GetUrlAndRouteObject(Model.Sort, "change_date")"> 
      Change Date 
      @Html.AddSortArrow(Model.Sort, "change_date") 
     </a> 
    </th> 
    <th> 
     Effective Date 
    </th> 
    <th> 
     @Html.DropDownListFor(model => model.type, new SelectList(Model.type), "-Type-", new { @id = "typeId" }) 
    </th> 
    <th> 
     Description 
    </th> 
    <th> 
     Empid 
    </th> 
    <th> 
     SSO 
    </th> 
    <th> 
     Agent_Name 
    </th> 
    <th> 
     @Html.DropDownListFor(model => model.type, new SelectList(Model.scorecard), "-Scorecard-", new { @id = "scorecardId" }) 
    </th> 
    <th> 
     Load_Date 
    </th> 
</tr> 

@foreach (var item in Model.get_staff_changelog_results) 
{ 
    <tbody id="myTable"> 
     <tr> 
      <td> 
       @using (Html.BeginForm("Index", "StaffChange", FormMethod.Post, new { @id = "myform" })) 
       { 
        @Html.Hidden("sso", item.SSO) 
        @Html.Hidden("name", item.Agent_Name) 
        <a href="javascript: submitForm();" class="fa fa-pencil fa-lg"></a> 
       } 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Change_Date) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Effective_Date) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Type) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Description) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Empid) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.SSO) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Agent_Name) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Scorecard) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Load_Date) 
      </td> 
     </tr> 
    </tbody> 
} 

上記の関数は、私の入力文字列が含まれている任意の文字列を見つけることです。私はCAMを探していた場合、私は唯一の私の結果でCAMをしたいすると実際には、結果の出力等CAM、CAM TOS、CAMのFOOを含むことができます。私は構文がこれを探していないことを理解していますが、これは私が問題を抱えているところです。

私が探している投稿については、hereの投稿が見つかりましたが、正しい構文を取得できません。私は以下を試しましたが、うまくいかないようです:

$(this).toggle($(this).children(":eq(" + "8" + ")").text().toLowerCase() === value > -1) 

完全一致を見つける正しい構文は何ですか?

+1

完全一致が必要な場合は、x.text()を使用しないでください。toLowerCase()=== "cam" '? –

+0

'.indexOf(value)> -1'はあなたに' 'contains 'を返します。 –

+0

私は$(this).toggle($(this).children(": "8" + ")を試しました。 ").text()。toLowerCase())=== valueしかし、どちらもうまくいかないようです。 – GRU119

答えて

0

<tbody>タグをループの外に取り出した後に、ループがforです。 これを試してみてください。あなたが試したこととあまり変わりません。 また、console.logは、2つのテキストを比較して、期待されるテキストを生成しているかどうかを確認します。

$(this).toggle(($(this).children(":eq(8)").text().toLowerCase()) === value); 
+0

フィードバックありがとうございます。残念ながら、それは動作しませんでした。 タグを取り除くと、フィルタリング中に範囲が失われたように見えます。私のフィルタで#myTableのIDを使用しているので – GRU119

関連する問題