如ajax 加载了 <div class="div">div</div>
然后$('.div').click(function(){.....}); click操作无效
但是如果加载 <div onclick=dofun("prameter")>div</div>
dofun 就可以被onclick触发。
你说的可以理解但也不理解,因为$('.div').click(function(){.....}); 是在 ajax加载出来之后才执行的;
而且,如果没找到对象,调试时应该报错才对,但是又没报错。
不是的~那个是之前就有了的~因为你用ajax加载的是div这个!但是浏览器在第一次加载渲染的时候没有找到div这个,所以你的那个$('.div').click(function(){.....});在浏览器第一次加载的时候是不会找到 class="div"的这个层的,所以就当没找到对象跳过去了,但是语法上又没有错误,所以它不会报错,至于你说的没找到对象也没有报错那是因为$('.div').click(function(){.....});这句根本就没有执行,所以不存在查找对象的问题,自然就不报错了~JS浏览器只加载一次,并且注册一些对应的事件,当第一次注册找不到对应的元素时就会被浏览器忽略,之后及时你再加载元素进来也不会再重新加载一次JS了,除非你刷新。所以你的$('.div').click(function(){.....}); 这句算是JS,所以浏览器只加载一次。所以不管用了
追问我试了试jquery live 可以 , 只是live 被作为废弃函数 不知道为什么..;
jquery on 如果写成$('body').on('click','#div4',function(){........}); 可以,
如果写成 $('#div').on('click',function(){....}) 则不可以;
难道是同一个道理.
必须同一个道理啊~你的选择器选BODY可以找到,但是#div找不到,所以肯定就没有后面的on()了,你可以看看jq的on是怎么写的,它在绑定的时候是不是重新让浏览器加载了一次这个方法,或者用到了别的方法,其实这个能不能行我也不知道,没试过,如果能行的话肯定有机制解决了AJAX的问题!
此函数被jquery 1.9废弃,jquery 一般废弃的都是影响性能或造成内存泄露的东西,但不调用应该就不会影响吧,不知为什么.
追答delegate这个方法可作为live()方法的替代,使得每次事件绑定到特定的DOM元素。