jquery ajax在加载而不是模糊时被触发

时间:2013-02-01 18:15:07

标签: jquery asp.net-mvc-4

我有一个名为applyToDetailRows的函数,我在加载时调用它,以及当我的页面的输入部分通过ajax重新绘制时。此函数将一堆事件附加到绘制的输入字段。字段上的一个事件是模糊,它触发ajax调用以获取学生信息。问题是,每次页面加载每个字段时,模糊ajax触发器都会触发,而不是在模糊上触发。只有在applyToDetailRows中定义了函数时才会发生这种情况。如果我将它从applyToDetailRows中拉出来,它可以正常工作。

有一点需要注意的是,我也以类似的方式在applyToDetailRows中定义了自动完成,并且它工作正常。但不是这个。

    function applyToDetailRows() {
        $(":input[data-getstudent]").each(function() {
            $(this).on('blur', function () {
                var elem = this;
                $.ajax({
                    url: $(elem).attr('data-getstudent'),
                    dataType: "json",
                    data: {
                        studentNumber: $(elem).val()
                    },
                    success: function (result) {
                    }
                });
            });
        });
    }

/* some other definitions */

//applyToDetailRows called

applyToDetailRows();

1 个答案:

答案 0 :(得分:0)

您希望在每次请求后使用事件委派而不是重新应用该函数,因为您可能错误地绑定它或者不止一次。

$(document).on("blur", ":input[data-getstudent]", function(){
  /* AJAX */
});

您可以将document替换为DOM树中距离较近的所有input元素的公共父级。