方案如下。
在父页面上,我们有一个div标签,其id和名称为“placeHolder”。
第一次加载页面时$(文档).ready(函数()被调用,但从第3步开始,就没有调用ready函数。
任何方向都会受到赞赏。
答案 0 :(得分:2)
我认为你暗示通过你的ajax调用注入div的元素正在丢失它们的事件处理程序。如果是这种情况,您需要使用live
委派这些事件,或者将它们重新绑定到ajax方法的success
回调中的元素。 $(document).ready()
块仅在第一次加载页面时执行。
比方说,通过ajax调用替换的元素之一是class="something"
的锚:
$('a.something').live("click", function() {
alert('hello');
});
以上将确保当通过ajax调用替换锚点时,单击处理程序仍将执行。
答案 1 :(得分:1)
你应该在你的ajax调用中使用complete
回调
答案 2 :(得分:1)
答案 3 :(得分:0)
我的理解是$(document).ready)仅在浏览器完成网页的初始GET时调用。
如果要触发某个函数,则可以在Ajax调用中使用成功回调。
答案 4 :(得分:0)
“第一次加载页面时$(文档).ready(函数()被调用,但是从第3步开始,就没有调用ready函数” - 假设1-3是在初始页面加载时按顺序执行。所以,YES - 这是它如何工作的有效描述。
$(document).ready()是一个EVENT HANDLER - 换句话说:文档已准备好被访问,脚本已经完成加载。其他事件发生在此之后(之前,但为此目的,jQuery在准备就绪时已“准备就绪”。
仅供参考,以下内容也有效:
function myOnLoaded()
{
// do my load thing here
}
$(document).ready(myOnLoaded);
当事件(就绪)触发时,调用myOnLoaded。
答案 5 :(得分:0)
上面关于$(document).ready不工作的原因的答案是正确的。
但$(document).live已在jquery 1.9中弃用 http://jquery.com/upgrade-guide/1.9/#live-removed
相反,你应该使用$(document).on 这里的文档:http://api.jquery.com/on/
function myOnLoaded()
{
// do my load thing here
}
$(document).on("click", "a.something", myOnLoaded)