作者TonyQ (沉默是金)
看板Ajax
标题Re: [问题] .html()之後 的事件
时间Sat Aug 29 07:53:37 2009
※ 引述《sowhysowhat (sowhysowhat)》之铭言:
: $("#a > img").click(){
: $("#a").html("<img src='xxxxx' id='b'>");
: }
如果我没猜错这应该是 jQuery的写法 (建议下次讨论标注)
而且其实这两个地方的写法好像都不太对吧?
还是 jQuery 有改过event binding的宣告式@_@
我认知中的写法应该要是
$("#a > img").click(function(){
$("#a").html("<img src='xxxxx' id='b'>");
});
: $("#b").click(){
: alert("it works~!!");
: }
: 为什麽像上述这样用.html()或.append()上去的东西
: 没办法对他们去侦测事件呢?
: 而这样却可以?不太明白阿=''=
: $("#a > img").click(){
: $("#a").html("<img src=xxxxx id='b'>");
: $("#b").click(){
: alert("it works~!!");
: }
: }
先不论语法问题 , 还有一个要注意的地方.
那就是时间点的问题 ,
因为在你的 #b 根据事件描述是在 #a 被点击之後才动态产生的 ,
也就是很有可能在你宣告 #a 的click 时仍尚未出现 ,
你紧接着在#a 之後宣告 #b的click事件 ,
那时候的 $("#b") 很有可能是空集合 , 也就是找不到任何 id=b的元素.
js操作上很讲究时间点 , 而另一种写法因为是写在#a的clict中 ,
则能确保 , 是在 #b被建立出来之後才对 #b进行绑定.
当然你可以透过 1.3新增的 live 来针对某些条件的元素 ,
做一致性的侦测绑订 , 不过这样多少会增加额外的cost ,
建议从流程设计的角度方面去思考为佳.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 116.59.168.233
1F:→ TonyQ:啧啧 刚刚看到推文才发现已经都有人讲过了...XDDD 08/29 07:54
2F:推 sowhysowhat:嗯 但对我这个新手来说 还是获益良多XD 09/03 12:28