更改点击JavaScript的其他n个孩子

问题描述 投票:1回答:1

我可以看到一些其他问题,这些问题与我所需要的相似,但是它们并没有通过javascript实现,这正是我所需要的。

在一个坚果壳中,我使用ASP.Net Core来显示带有按钮链接旁边的值的表。当用户单击此按钮时,它将运行javascript,该javascript将其他字段追加到屏幕其他部分的表中。它还将按钮的(字体真棒)图像更改为另一图像。但是,如果用户随后单击另一个按钮,它将按预期工作(即,它在表中显示新数据并摆脱旧值,以及将btn-link更改为箭头中的新图像)。框),但我不知道如何将最初单击的按钮(或所有其他按钮)重置回原始图像(剪贴板)。我想我需要对第n个孩子做些事情,但我不确定。我看过not:nthchild(n),但似乎没有用。

这是我的HTML代码:

<div class="card-body pl-0">
                    @*--------Specific Roles / TABLE--------*@
                    @foreach (var jobCat_Group in Model.RqmtData.SpecificRoles.GroupBy(specRoleType_Group => specRoleType_Group.SpecRoleType.JobCategory.JobCategory))
                    {
                        <table class="table lists-table py-0 border-0">
                            <tr class="py-0">
                                <td class="border-0 py-1 animate__animated animate__fadeInUp animate__delay-2s">
                                    Working in <b>@jobCat_Group.Key</b>
                                </td>
                            </tr>

                            @foreach (var specRoleType_Group in jobCat_Group.GroupBy(specRole => specRole.SpecRoleType.SpecificRoleType))
                            {
                                <tr>
                                    <td class="border-0 pb-1 pt-2 animate__animated animate__fadeInUp animate__delay-2s">
                                        <h6>@Model.RqmtData.JobTitles.FirstOrDefault().Band.Band <span> | </span> @Model.RqmtData.JobTitles.FirstOrDefault().JobTitle | @specRoleType_Group.Key</h6>
                                    </td>
                                    @foreach (var specRole in specRoleType_Group)
                                    {
                                        @if ((specRole.SpecificRole == null) && ((specRole.SpecRoleM2mEnhApp.Count != 0) || (specRole.SpecRoleM2mQual.Count != 0) || (specRole.SpecRoleM2mSkill.Count != 0) || (specRole.SpecRoleM2mTraining.Count != 0) || (specRole.SpecRoleM2mCpd.Count != 0)))
                                        {
                                            <td class="border-0 animate__animated animate__fadeInLeft animate__delay-2s btn-link py-1" style="width: 1% !important;" data-id="@specRole.SpecificRoleId" id="appendRqmts">
                                                <i class="fas fa-clipboard-list"></i>
                                            </td>
                                        }
                                    }
                                </tr>

                                @foreach (var specRole in specRoleType_Group.Where(specRole => specRole.SpecificRole != null))
                                {
                                    <tr>
                                        <td class="border-0 py-1 animate__animated animate__fadeInUp animate__delay-2s">
                                            @specRole.SpecificRole
                                            @if (specRole.Remit != null)
                                            {
                                                <span> (</span>@specRole.Remit<span>)</span>
                                            }
                                        </td>
                                        @if ((specRole.SpecRoleM2mEnhApp.Count != 0) || (specRole.SpecRoleM2mQual.Count != 0) || (specRole.SpecRoleM2mSkill.Count != 0) || (specRole.SpecRoleM2mTraining.Count != 0) || (specRole.SpecRoleM2mCpd.Count != 0))
                                        {
                                            <td class="border-0 animate__animated animate__fadeInLeft animate__delay-2s btn-link py-1" style="width: 1% !important;" data-id="@specRole.SpecificRoleId" id="appendRqmts">
                                                <i class="fas fa-clipboard-list"></i>
                                            </td>
                                        }
                                    </tr>
                                }


                            }
                        </table>
                    }
                </div>

这里真正需要查看的唯一位是btn-link部分(但其余部分用于上下文):

<td class="border-0 animate__animated animate__fadeInLeft animate__delay-2s btn-link py-1" style="width: 1% !important;" data-id="@specRole.SpecificRoleId" id="appendRqmts">
                                                <i class="fas fa-clipboard-list"></i>
                                            </td>

这是正在运行的javascript(其中不包括将所有其他btn链接重置为原始图像的位:

    $(function () {
$('#appendRqmts:nth-child(n)').on('click', function () {

    $('#specRolesTable_EnhAppRoute, #specRolesTable_Quals, #specRolesTable_Skills, #specRolesTable_Training, #specRolesTable_CPD').empty();

    var url = "/api/SpecRolesViewData/";
    var specRoleId = $(event.target).closest('td').data('id');

    $(this).html('<i class="fas fa-sign-in-alt"></i>');

    $.get(url + specRoleId, function (data) {

        $.each(data, function (i, item) {

            var tableParent;
            var tableContent;

            switch (item.rqmtTypeID) {
                case 1:
                    tableParent = $('#specRolesTable_EnhAppRoute');
                    var isNullLevel = (item.rqmtLevel != null) ? '<span> | Level </span>' + item.rqmtLevel : '';
                    tableContent =
                        '<tr>'
                    + '<td class="bg-light border-top border-bottom animate__animated animate__fadeInDown" style="width: 1% !important;">'
                        + '<i class="fas fa-certificate"></i>'
                        + '</td><td class="bg-light border-top">'
                    + '</td><td class="bg-light border-top border-bottom animate__animated animate__fadeInDown">'
                        + item.requirement
                        + isNullLevel
                        + '</td></tr>';
                    break;
                case 2:
                    tableParent = $('#specRolesTable_Quals');
                    var isNullLevel = (item.rqmtLevel != null) ? '<span> | Level </span>' + item.rqmtLevel : '';
                    tableContent =
                        '<tr>'
                        + '<td class="bg-light border-top border-bottom animate__animated animate__fadeInDown" style="width: 1% !important;">'
                        + '<i class="fas fa-certificate"/>'
                    + '</td><td class="bg-light border-top border-bottom animate__animated animate__fadeInDown">'
                        + item.requirement
                        + isNullLevel
                        + '</td></tr>';
                    break;
                case 3:
                    tableParent = $('#specRolesTable_Skills');
                    tableContent =
                        '<tr>'
                        + '<td class="bg-light border-top border-bottom animate__animated animate__fadeInDown" style="width: 1% !important;">'
                        + '<i class="far fa-check-circle"></i>'
                    + '</td><td class="bg-light border-top border-bottom animate__animated animate__fadeInDown">'
                        + item.requirement
                        + '</td></tr>';
                    break;
                case 4:
                    tableParent = $('#specRolesTable_Training');
                    var isNullLMSLink = (item.lmsLink != null) ? '<a href="' + item.lmsLink + '">' + item.requirement + '</a>' : item.requirement;
                    tableContent =
                        '<tr>'
                    + '<td class="bg-light border-top border-bottom animate__animated animate__fadeInDown" style="width: 1% !important;">'
                        + '<i class="far fa-caret-square-right"></i>'
                    + '</td><td class="bg-light border-top border-bottom animate__animated animate__fadeInDown">'
                        + isNullLMSLink
                        + '</td></tr>';
                    break;
                case 5:
                    tableParent = $('#specRolesTable_CPD');
                    var isNullLMSLink = (item.lmsLink != null) ? '<a href="' + item.lmsLink + '">' + item.requirement + '</a>' : item.requirement;
                    tableContent =
                        '<tr>'
                    + '<td class="bg-light border-top border-bottom animate__animated animate__fadeInDown" style="width: 1% !important;">'
                        + '<i class="far fa-caret-square-right"></i>'
                        + '</td>'
                    + '<td class="bg-light td-contents-text border-top border-bottom animate__animated animate__fadeInDown">'
                        + isNullLMSLink
                        + '</td>'
                    + '<td class="td-contents-text bg-light border-top border-bottom w-25 animate__animated animate__fadeInDown">'
                        + item.cpdType_Option
                        + '</td>'
                        + '</tr>';
                    break;
            }

            tableParent.append(tableContent);

        });
    });
}); 

});

与html / ASP一样,这里唯一需要关注的地方是$(this).html('<i class="fas fa-sign-in-alt"></i>');位,但我已将其全部添加为上下文。

((注:一旦得到答案,我将删除不需要的部分代码,因为目前我可能会丢失一些内容-我还将展示所有有效解决方案的实现,如下我总是这样做。

所以,我的问题是...在改变页面上的其他元素之前,有没有办法将通过ASP.Net生成的列表中的所有其他按钮设置为使用Javascript的特定图像。 >

希望这很有意义,如果您需要进一步的澄清,请告诉我。如果需要,我可以做屏幕打印,但希望这将是一个简单的解决方法。我有点像JavaScript的菜鸟。

提前感谢!

我可以看到一些其他问题,这些问题与我所需要的相似,但它们不是通过javascript实现的,这正是我所需要的。简而言之,我使用ASP.Net Core来...

javascript html jquery asp.net-core this
1个回答
0
投票

这里是演示.siblings()的示例。您想找到按钮单击的js函数,然后从那里可以访问this项目以更改单击的项目的图像...然后单击siblings()来设置其他图像。祝你好运

© www.soinside.com 2019 - 2024. All rights reserved.