AJAX操作后绑定的事件处理程序不再工作
Bound event handlers no longer work after AJAX manipulation
我正在将一些jQuery事件处理程序绑定到页面中的一个元素,该元素最初运行良好,但如果用户选择页面上的单选按钮,则该元素将被删除;他们可以通过选择另一个单选按钮将其带回;然而,当AJAX将数据加载回时,函数不再从事件处理程序中激发。
我将其与以下内容绑定:
jQuery(document).ready(function(){
jQuery('#buyout_field').mouseleave(function() {
update();
});
jQuery('#buyout_field').focusout(function() {
update();
});
});
因此,概括一下,最初运行良好,但一旦AJAX删除并放回数据,它就不再运行了。
以下是运行AJAX的代码:
function update() {
getAjaxData(loadUrl, dataObject, 'GET', 'json')
.done(function(response) {
// Add/Hide other data
jQuery('#buy_now').html(response.buy_now);
})
// End
}
function getAjaxData(loadUrl, dataObject, action, type) {
return jQuery.ajax({
type: action,
url: loadUrl,
data: dataObject,
dataType: type
});
}
元素buyout_field
包含在buy_now
元素内。
元素不是被放回DOM中了吗?
试试这个:
jQuery('#buy_now').on('mouseleave', '#buyout_field', function() {
update();
});
jQuery('#buy_now').on('focusout', '#buyout_field', function() {
update();
});
您需要委派事件
jQuery(document).on('focus', '#buyout_field', function() {
update();
});
jQuery('#buyout_field').on({
mouseleave : function() {
update();
}, $(document)
});
最好将委托给文档的事件替换为事件绑定到的静态祖先。。在这种情况下,'#buy_now'
将是静态父级,因为当绑定事件时,它总是出现在页面上。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- keyup事件处理程序更改焦点不适用于快速键入
- 用程序搜索JQuery数据表中的文本
- Javascript:selenium Web驱动程序isDisplayed()不工作
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- ExtJS 5用程序点击actioncolumn gridview
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 如何从Java/scala调用js美化程序
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- Meteor应用程序突然不再在iOS上运行
- 科尔多瓦 - 如何检测应用程序不再被积极使用Android
- 事件处理程序在 html 重新呈现后不再工作
- AJAX操作后绑定的事件处理程序不再工作
- AngularJS应用程序不再工作
- jQuery -当你委托一个事件处理程序时,它是否也会自动从不再匹配的元素中移除自己?
- 对于安全的应用程序,不再支持禁用javascript或非ajax浏览器是否可以接受?