javascript - 如何在 on() 方法内调用 ajax 后执行 javascript

标签 javascript jquery asp.net ajax asp.net-mvc

我正在尝试在 .on() 方法调用的函数内执行 $.ajax() ,以便在新附加的数据中,可以在 .click() 事件上执行脚本 -我知道这可能与其他请求类似,但我已经尝试过,但找不到代码有什么问题......

ajax 函数通过 select 中的更改来调用,并且“this”作为变量传递给该函数。

数据已正确插入目标 div 内,但似乎没有冒泡,因为没有 javascript 从其中运行(但在目标 div 外部运行)。

我使用了 .on() 所以它会冒泡,并更新 DOM,我不知道我做错了什么......

ajax 的调用方式为:

$("body").on("change", "[data-project-ajaxSelect='true']", {select: this},Select_AjaxCall);

function Select_AjaxCall(event) {

    $select = event.data.select;

    if (typeof $select.data === "undefined" || $select.data === null) {
        var $select = $(this);
    }



    var options = {
        url: $select.attr("data-project-action"),
        type: $select.attr("data-project-method"),
        target: $select.attr("data-target"),
        data: { guid: $select.val() }
    }

    $.ajax({
        type: options.type,
        url: options.url,
        data: options.data,
        dataType: "html",
        success: function (data) {
            console.log(data)

            $(options.target).html(data);

        }
    });

    return false;

};

从该代码中,添加了一个带有以下 View 代码的按钮:

<button id=@Model.Guid
    class="button default cycle-button"
    data-toggle="modal"
    data-target="#modalDiv"
    data-backdrop="static"
    data-keyboard="true"
    data-modal-modal="true"
    data-modal-controller="Fin_Movement_Type"
    data-modal-action="Create"
    data-modal-var-guid=@Model.Guid
    data-modal-var-modal=@ViewBag._modal>
    <span class="icon mif-plus"></span>
</button>

通过单击此按钮,应触发以下 .click() 事件...

$("[data-modal-modal='true']").click(function () {  ...  }

但事实并非如此。

请帮我找出我的代码中的错误在哪里...谢谢。

最佳答案

编辑

看来您需要已从 jQuery 中删除的 live 功能,但您可以使用 on 来代替它,这样:

$(function () {
    $(document).on("click","[data-modal-modal='true']", function () {
        alert('clicked'); 
    });
});

原创

您可以在成功方法的末尾添加代码:

success: function (data) {
     console.log(data);
     $(options.target).html(data);
     $("[data-modal-modal='true']").on("click", function() {
         alert('clicked!');
     });
}

您还可以在 onclick 属性中使用合适的脚本加载按钮,例如:

<button id="@Model.Guid"
    ...
    onclick="alert('clicked!');">
    <span class="icon mif-plus"></span>
</button>

关于javascript - 如何在 on() 方法内调用 ajax 后执行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638870/

相关文章:

jquery - 如何将数据网格devextreme发布到asp.net mvc中的 Controller

c# - 如何在没有 Shift、Control 或 Alt 要求的情况下将键盘快捷键分配给 asp.net 按钮?

javascript - ES6 异步生成器结果

javascript - 检测打印机是否已成功打印页面

javascript - 排序后,dblclick功能停止工作

javascript - 如何使用 Jquery 从 Asp.net MVC 中的 CheckBox 中获取选定的值?

c# - 即使定义了 ID 也无法获取文本框

javascript - 在jquery中向上滚动时如何使类消失

javascript - 使用 puppeteer 在本地下载网站,无需 Javascript

javascript - Jquery:.show() div 功能未按预期工作?