Jquery有live函数,那,如何用原生的Js绑定还未出现的元素的事件呢?
假设有一个DIV,<divid="sui_bian">ajax取得内容后将放在这里</div>,现在,我将用ajax取得服务器端的内容并将内容填充到这个DIV内,对于这些...
假设有一个DIV,<div id="sui_bian">ajax取得内容后将放在这里</div>,现在,我将用ajax取得服务器端的内容并将内容填充到这个DIV内,对于这些还未出现但一定会出现的元素,且内容的模板、结构、id、class、事件统统是由我制定的,我想事先对这些内容中的某些元素写好事件,
那么,我要提问了,
我要如何用原生的js来绑定它们(将来要出现的已知id或class的元素)的事件呢?
要求:不准用任何其它第三方的框架(jquery、moontools等),只准用原生的js。
提示:这个好像涉及到事件的原理、事件的冒泡等等,我百度过,没有找到具体的详细的方案,所以,只好来此一问。 展开
那么,我要提问了,
我要如何用原生的js来绑定它们(将来要出现的已知id或class的元素)的事件呢?
要求:不准用任何其它第三方的框架(jquery、moontools等),只准用原生的js。
提示:这个好像涉及到事件的原理、事件的冒泡等等,我百度过,没有找到具体的详细的方案,所以,只好来此一问。 展开
展开全部
.live()背后神奇的地方就在于它并不将事件绑定到你选定的elements上,而实际上是绑定到了DOM树的跟节点,而是在element中就像一个参数一样进行传递。
那么当你点击一个元素时,事件就会在DOM树上往上传递,直至到达根节点。这个事件的触发器已经在根节点被.live()创建。这个触发方法将首先检测被点击的目标看是否和.live()调用的选择器相匹配。如果匹配,那么绑定的方法就会执行了。
因为不管你在根节点内点击了什么,根节点的事件都会被触发,当你点击加入到根节点的任何元素时这个检查都会发生。
比如你要给一个还没有添加在页面中的id为“ABC”元素添加click事件。
实际上你要给document元素添加click事件。
并且在document的click回调函数中,判断事件源event.target。然后判断它的ID是“ABC”则执行相应的事件函数。类似这样。
那么当你点击一个元素时,事件就会在DOM树上往上传递,直至到达根节点。这个事件的触发器已经在根节点被.live()创建。这个触发方法将首先检测被点击的目标看是否和.live()调用的选择器相匹配。如果匹配,那么绑定的方法就会执行了。
因为不管你在根节点内点击了什么,根节点的事件都会被触发,当你点击加入到根节点的任何元素时这个检查都会发生。
比如你要给一个还没有添加在页面中的id为“ABC”元素添加click事件。
实际上你要给document元素添加click事件。
并且在document的click回调函数中,判断事件源event.target。然后判断它的ID是“ABC”则执行相应的事件函数。类似这样。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询