jQuery如何与ajax加载的内容进行交互?
我通过使用成功加载内容
jQuery(".menu li a").click( function(event){ jQuery("#loadingArea").load(this.href) });
加载内容后,我的页面中有新元素。 我试图应用jQuery操作(当我点击或hover鼠标时执行某些操作),并且元素没有响应。
请解释为什么我无法触发通过ajax加载的内容中的事件?
方法.load()是否与此有关(即如果我使用了$ .ajax,我将能够与这些内容进行交互)?
谢谢,
.live()
是您问题的答案:
来自文档:
.live()方法能够通过使用事件委托来影响尚未添加到DOM的元素:绑定到祖先元素的处理程序负责在其后代上触发的事件。 传递给.live()的处理程序永远不会绑定到元素; 相反,.live()将一个特殊的处理程序绑定到DOM树的根。
jQuery(".menu li a").click( function(event){ jQuery("#loadingArea").load(this.href); }); jQuery("#loadingArea a").live('click', function() { /* Insert eMagic! */ });
你必须使用.live()或.delegate()
所以ajax加载的内容也被委托了
.live()
现已删除
这就是现在的方法:
$(document).on("click",".menu li a",function(e){ });
你应该为ajax加载的内容使用实时事件处理程序
$("a").live("click",function(){ // your code });
live将事件绑定到未来元素以及现有元素。
.live()
或.delegate()
会在这里帮助你。 因为新的元素在启动时不在那里,你绑定函数的那一刻就不会被应用。 通过live(),事件会冒泡,您可以将事件绑定到它