jquery live()只支持css选择器
昨天在处理过keypress键盘事件后,今天要把用户在页面上动态添加的字段条目加上删除功能,就是在每个字段后面加上一个漂亮的小按钮,当用户点击这个按钮,相应的条目就被从数据库中删除。
为了实现这种功能,必须保证任何新添加的条目在不刷新页面的情况下也能相应删除事件,因此,就必须使用jquery.live()来绑定click事 件到那个漂亮的小按钮上,但是由于这个按钮是嵌入到每一个条目上的,所以它们处于DOM树比较深的层次下,本来我是用jquery的children() 逐层来选择这些按钮的,但是测试了很多次都通过不了,firebug上显示的错误是选择器无法被jquery内核识别,一时不知道怎么回事。
晚上下班回去在手机上百度了下,后来知道jquery的live()只能支持CSS选择器,说实话,当时没怎么看明白这句话,今天上午上班前又在 jquery的blog上翻了一篇英文文章,讲live()和die()的深层机制,后来明白了,就是在使用live()的时候只能使用选择器,不能使用 jquery内置的遍历函数,像children()、parent()、next()、prev()等都是live()不支持的,这也是live()的 短板之一,这篇博客的主人表示他将研究jquery内核并修复这个缺陷,但是要时间,没办法,先这样用着吧,暂时还能满足需求。
后来把代码中的所有遍历函数都换成css选择器,一切正常了。