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

时间:2015-11-10 20:22:07

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

我正在尝试在.on()方法调用的函数内执行$ .ajax(),这样在新添加的数据中,就可以在.click()事件上执行脚本 - 我知道这可能与其他请求类似,但我已经尝试过,并且无法找到代码的错误......

ajax函数通过选择中的更改来调用,并且'这个'作为变量传递给函数。

数据被正确插入目标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;

};

从该代码中添加一个按钮,其中包含以下查看代码:

<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 () {  ...  }

但它不是。

请帮我查一下我代码中的错误...谢谢。

1 个答案:

答案 0 :(得分:1)

修改

您似乎需要live已从jQuery中移除的功能,但您可以使用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>