首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么SweetAlert在每个循环之后都会被重写?

为什么SweetAlert在每个循环之后都会被重写?
EN

Stack Overflow用户
提问于 2022-11-27 13:08:36
回答 1查看 29关注 0票数 1

我试图为我的每一项活动创建一个删除按钮,但是当我对delete按钮应用甜警报时,它将在每次迭代后被重写。因此,无论您按哪个按钮,它都会删除列表中的最后一项。

这是我创建按钮的部分视图中的->。

代码语言:javascript
复制
    <td>
        <form asp-action="DeleteActivity" method="post">
            <input type="hidden" name="ActivityID" value="@Model.Activityid" />
            <input name="returnURL" type="hidden" value="@ViewBag.returnURL" />
            <button class="btn ff f-16 background-transparant foreground-red delete-confirm" type="submit" id="@Model.Activityid"> Slet </button>
        </form>
    </td>
</tr>

<script type="text/javascript">
        $('.delete-confirm').on('click', function(e) {

        e.preventDefault()
        var requested_to = $(this).attr("id")

        console.log('DeleteRequest on activityID: ' + requested_to);

        swal({
            title: 'Bekræft',
            text: 'Advarsel: Indholdet vil blive permanent slettet!',
            type: 'warning',
            showCancelButton: true,
            confirmButtonText: 'Slet',
            confirmButtonColor: '#C6472A',
            cancelButtonText: 'Fortryd'
        }).then((result) => {
            if (result.value) {
                $('.delete-confirm').closest('form').submit();
            }
        });
    });
</script>

这是我的主视图,循环正在发生->。

代码语言:javascript
复制
    <table class="tableView pad-5">
        <thead class="background-darkBlue foreground-white">
            <tr>
                <th>Title</th>
                <th>v/ hvem</th>
                <th>Dato</th>
                <th>Afdeling</th>
                <th>Lokale</th>
                <th>Status</th>
                <th>Rediger</th>
                <th>Slet</th>
        </thead>

        <tbody>
            @foreach (Activity a in Model.OrderBy(a => a.date))
            {
                <partial name="ActivitySearchPartialview" model="a" />
            }
        </tbody>
    </table>

如何使循环中每一次迭代中的按钮都是唯一的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-27 13:31:25

这句话似乎是罪魁祸首

代码语言:javascript
复制
$('.delete-confirm').closest('form').submit();

这将始终标识第一个form。我创建了一个片段来说明这一点,不正确地将form标识为$('.delete-confirm').closest('form'),将form正确标识为$(this).closest('form'),因此,我们没有在DOM中搜索任何.delete-confirm和最接近匹配的form,而是专门搜索我们单击的.delete-confirm和与之最接近的.delete-confirm。这就是为什么我们在第一个控制台日志中得到相同的结果,而不依赖于我们单击的内容和第二个日志的正确结果。

代码语言:javascript
复制
$('.delete-confirm').on('click', function(e) {
    e.preventDefault();
    console.log('Incorrect: ');
    console.log($('.delete-confirm').closest('form').attr('asp-action'));
    console.log('Correct: ');
    console.log($(this).closest('form').attr('asp-action'));
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
    <td>
        <form asp-action="DeleteActivity1" method="post">
            <input type="hidden" name="ActivityID" value="1" />
            <input name="returnURL" type="hidden" value="@ViewBag.returnURL" />
            <button class="btn ff f-16 background-transparant foreground-red delete-confirm" type="submit" id="1"> Slet </button>
        </form>
    </td>
    <td>
        <form asp-action="DeleteActivity2" method="post">
            <input type="hidden" name="ActivityID" value="2" />
            <input name="returnURL" type="hidden" value="@ViewBag.returnURL" />
            <button class="btn ff f-16 background-transparant foreground-red delete-confirm" type="submit" id="2"> Slet </button>
        </form>
    </td>
    <td>
        <form asp-action="DeleteActivity3" method="post">
            <input type="hidden" name="ActivityID" value="3" />
            <input name="returnURL" type="hidden" value="@ViewBag.returnURL" />
            <button class="btn ff f-16 background-transparant foreground-red delete-confirm" type="submit" id="3"> Slet </button>
        </form>
    </td>
</tr>
</table>

奇怪的是,您的代码导致删除了最后一个元素而不是第一个元素,所以您所描述的行为与我所描述的bug的行为略有不同,但它可能是一个不同的jQuery版本,一些结构上的细微差别,问题没有澄清,一些服务器端的错误或任何其他问题。然而,您所经历的客户端问题似乎正是我上面描述的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74590296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档