我之前问过类似的问题How can I have jquery attach behavior to an element after inserting it,但是还是没有找到答案。为了保持清楚,我用另一个例子问了一个新问题。jQuery的live和livequery当我通过ajax加载表单时不工作
这是我的代码不起作用。
$(document).ready(function() {
$('form.edit_color').live('submit', function(){
var form = $(this).closest('form');
var colorRow = $(this).closest('tr');
var action = $(form).attr('action');
var formData = $(form).serialize();
$(colorRow).fadeOut();
$.post(action, formData,
function(data) {
$(form).replaceWith(data);
$(colorRow).fadeIn();
});
return false;
});
});
这是什么情况,对于我的每一个表单,我都可以通过ajax提交它们,并用更新的表单替换它。但是,当我点击新的提交按钮时没有任何反应。
但我不更换colorRow,只是里面的表格,这是一个小型 – ToreyHeinz 2009-11-24 01:39:45
另外我只是实现了相同的代码的其他地方和它的工作...我认为不同的是,在这种情况下,我的表单不正确地包含了一些表格元素。 – ToreyHeinz 2009-11-24 01:42:56
啊,好的,很酷。是的,会发生这样的情况:你不能在IE中的表中设置innerHTML,所以jQuery有一个解决方法,但是因为它只会在你创建的元素是像'tr'或'tbody'这样的表子元素时触发。 jQuery假设你只会以HTML有效的方式嵌套,这可能够公平。 – bobince 2009-11-24 18:12:22