通过完全匹配内容来选择元素的语法

时间:2017-11-30 03:16:25

标签: jquery filter jquery-selectors

通过完全匹配内容来选择元素时,我遇到了语法问题。

$(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 TOS,CAM FOO 等。实际上,我想要在我的搜索结果中使用 CAM 。我理解我的语法不是在寻找这个,但这就是我遇到问题的地方。

我发现帖子here解释了我正在寻找的内容,但我无法获得正确的语法。我已经尝试了下面的内容,但似乎不起作用:

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

找到完全匹配的正确语法是什么?

1 个答案:

答案 0 :(得分:0)

<tbody>循环中取出for标记后。 尝试这个,虽然与你尝试过的没什么不同。 还可以在console.log中比较你要比较的两个文本,看看它们是否产生了预期的文本。

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