jQuery在更新DOM后无法触发更改
我在一个链中创建了一些相关下拉列表。顶部的一个应该为它下面的每个下拉菜单触发多个Ajax请求 我正在使用jQuery1.3.2,因此所有重新加载的DOM项都应该绑定事件处理程序,但新更新的元素不会触发更改 我在这里做错了什么jQuery在更新DOM后无法触发更改,jquery,ajax,triggers,Jquery,Ajax,Triggers,我在一个链中创建了一些相关下拉列表。顶部的一个应该为它下面的每个下拉菜单触发多个Ajax请求 我正在使用jQuery1.3.2,因此所有重新加载的DOM项都应该绑定事件处理程序,但新更新的元素不会触发更改 我在这里做错了什么 function dropDown_CHILD() { jQuery.ajax({ 'async': false, 'url':..., 'data':..., 'cache':false,
function dropDown_CHILD()
{
jQuery.ajax({
'async': false,
'url':...,
'data':...,
'cache':false,
'success':function(html){
$('#CHILD_unavailable').empty();
$('#CHILD').replaceWith(html);
},
'complete': function(request, status){
$('#CHILD').trigger('change');
},
'error':function(a,b,c){alert('An error occurred, please try again.');}
});
}
$('#PARENT').livequery('change', dropDown_CHILD);
对于CHILD-OF-CHILD也会产生同样的结果,所以这应该在完整的函数中调用它的处理程序,不是吗
更新:
非常感谢您的光临。也许replaceWith会在插入替换之前删除元素,以便您的事件解除绑定: 当一个元素不再匹配 选择器选择活动查询绑定的事件 对它来说,它们是不受约束的。实时查询可以 已过期,不再具有约束力 其他事件并解除所有事件的绑定 它以前绑定的事件。 livequery文档
我最终解决了这个问题,将插件替换为,将侦听器放在文档DOM对象上
现在,无论DOM是如何更新的,它都知道所有实例。您是否有一个实时测试用例?那真的很有帮助。我必须得到客户的批准,这需要一段时间。你可以复制它并删除任何特定于客户的信息:给你:你能告诉我们它在哪里不起作用吗?我应该单击什么,等等?Replace肯定会删除该元素,但它也会添加另一个具有相同ID的元素。您还有什么建议吗?作为一种解决方法,您可以使用触发函数替换.trigger'change'。PS:当第二个select有2个元素时,你会重现这个问题吗?触发的函数只知道父项和子项。它不应该知道child中的child,因为这是可选的。是的,无论项目数量如何,错误都会存在。是的,触发器函数知道child而不是child的child,但是使用触发器函数可以得到相同的级联,我不明白为什么不在示例代码中