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

我有一个名为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(); 

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

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

您可以使用DOM树中比它更接近的所有input元素的公共父项替换document