javascript - 为什么ajax下的javascript actionlink函数在mvc中不起作用

标签 javascript ajax asp.net-mvc

在 ajax get 方法下,我需要以编程方式生成表。为什么 actionlink 不适用于我的表

ajax方法

       $(document).ready(function () {
//click event
            $('.delete-logo').on('click', function () {

                var id = $(this).data('key');
                alert(id);
            });
//click event               
            $('.edit-logo').on('click', function () {

                var id = $(this).data('key');
                alert(id);
            });

            $('.submitDetailForm').on('click', function () {                

            //get value from control
                var ProductID = $('#ProductID').val();
                var Qty = $('#Qty').val();
                var Unit = $('#Unit').val();
                var Amount = $('#Amount').val();
                var ICMS = $('#ICMS').val();
                var IPI = $('#IPI').val();
                var ProductName = $('#ProductID option:selected').text();


                var booksDiv = $("#booksDiv");
                $.ajax({
                    cache: false,
                    type: "GET",
                    url: '@Url.Action("AddToCard", "Sales")',
                    data: { ProductID: ProductID, ProductName: ProductName, Qty: Qty, Unit: Unit, Amount: Amount, ICMS: ICMS, IPI: IPI },
                    success: function (data) {
                        console.log(data);
                        var result = "";
                        booksDiv.html('');
                        $.each(data, function (SalesOrderID, OrderDetails) {

                            result += '<tr> <td>' + OrderDetails.Name + '</td>' +
                                '<td>' + OrderDetails.Qty + '</td>' +
                                '<td>' + OrderDetails.Unit + '</td>' +
                                '<td>' + OrderDetails.Amount + '</td>' +
                                '<td>' + OrderDetails.ICMS + '</td>' +
                                '<td>' + OrderDetails.IPI + '</td>' +
                                '<td><a class="edit-logo" data-key=' + OrderDetails.SalesOrderDetailID + ' href="javascript:void(0);">' + 'Edit' + '</a></td>' +
                                '<td><a class="delete-logo" data-key=' + OrderDetails.SalesOrderDetailID + ' href="javascript:void(0);">' + 'Delete' + '</a></td>' +
                                ' </tr>';
                        });
booksDiv.html(result);

                    },
                    error: function (xhr, AJAXOptions, thrownError) {
                        alert('Failed to retrieve books.');
                    }
                });
            });
        });

超链接内容

    '<td><a class="edit-logo" data-key=' + OrderDetails.SalesOrderDetailID + ' href="javascript:void(0);">' + 'Edit' + '</a></td>' 

'<td><a class="delete-logo" data-key=' + OrderDetails.SalesOrderDetailID + ' href="javascript:void(0);">' + 'Delete' + '</a></td>' 

超链接在浏览器中显示完美,但无法调用点击事件

为什么我的actionlink点击事件没有被触发?

最佳答案

添加动态内容时需要使用事件委托(delegate)(使用 .on() 函数)

$('#booksDiv').on('click', '.delete-logo', function() {
  ....
});
$('#booksDiv').on('click', '.edit-logo', function() {
  ....
});

其中 id="booksDiv" 的元素是首次生成页面时存在的最接近的祖先。

旁注:您无需手动生成 JavaScript 对象,只需使用 data: $('form').serialize(),

关于javascript - 为什么ajax下的javascript actionlink函数在mvc中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34367448/

相关文章:

javascript - 使用 $sce.trustAsHtml 渲染字符串返回未定义

javascript - 如何使用 HTML 实现此最大文件大小脚本?

javascript - 加载表格时显示页面加载图标

php - 在我的 ajax 民意调查中,.empty() 无法在 PHP 中使用 js

javascript - 如何在 asp.net mvc View 中从 ienumerable 中选择一行

c# - 无法将来自不同项目的新脚手架项目添加到我的 Web 项目 (MVC 5)

javascript - 使用 Javascript 检查 HTML

javascript - 意外 token "."(句点)

php - 星级评定系统,类似于亚马逊

jquery - Ajax json 到 MVC5 Controller : Passing object containing a collection