Javascript 如何在jQuery中保持通过ajax调用添加的事件元素;主动的;
我通过ajax(post)请求在页面上放置内容,如下所示:Javascript 如何在jQuery中保持通过ajax调用添加的事件元素;主动的;,javascript,jquery,javascript-events,event-handling,Javascript,Jquery,Javascript Events,Event Handling,我通过ajax(post)请求在页面上放置内容,如下所示: $("input#ViewMore").click(function() { var data = { before: oldestDate, threadId: 1 }; $.post("/Message/More", data,function(html) { $('tbody#posts').prepend(html);
$("input#ViewMore").click(function() {
var data = { before: oldestDate, threadId: 1 };
$.post("/Message/More", data,function(html) {
$('tbody#posts').prepend(html);
return false;
},
"html");
return false;
});
html返回时看起来像:
消息输出引号
这一切都很好,一切都正常,没有问题
当我将一个事件挂接到通过ajax调用添加的“quote”锚中时,就会出现问题。具体来说,该锚上的jQuery事件不会触发。为什么?
例如:
$("#quote).click(function() { ... });
什么也不做。表现得好像上面没有任何事件。我知道它正在处理页面上没有通过ajax请求添加的其他锚,因此那里没有代码错误,而且如果我刷新页面,它将正确触发。发生这种情况有什么原因吗?我是否需要某种方式重新初始化锚标记上的事件?有什么想法吗
使用jQuery 1.3.1(也不适用于1.2.6),因此我认为这是我的实现,而不是代码本身。当使用Ajax将新内容添加到页面时,您必须将所有事件重新注册到这些新元素。您可以使用jQuery 1.3,live将为所有当前和未来匹配的元素将处理程序绑定到事件 更改为
$('#quote').live("click", function() { ... }
及
CMS的答案似乎不起作用,但结果如下: 查看更多按钮事件与添加它的AJAH请求之外的事件保持相同:
$("input#ViewMore").click( function() { ... }
使用live方法时,需要在AJAH请求中添加或从中添加事件的元素:
$('#quote').live("click", function() { ... }
工作起来很有魅力 我该怎么做呢?
$('#quote').live("click", function() { ... }