最近开始使用jQuery移动开发,我对事件检测的行为有点迷惑。在标准的jQuery中,我总是可以使用
$("#someId").on("click",doSomething());
这将会起作用。但是,我发现使用jQuery mobile时,我必须通过以下方式将事件处理程序绑定到整个文档:
$(document).on("click","#someId",doSomething());
有人知道为什么会这样吗?jQuery mobile处理事件的方式与jQuery如此不同吗?
发布于 2013-03-01 12:51:13
当你调用标准的jQuery绑定时,它们就起作用了--也就是说,当你用$("#someId").on("click",doSomething());
代码加载页面时,它将查找带有someId
标识符的元素,并将doSomething()
回调绑定到它。但是在jQuery手机中,当你加载页面时,一些元素不会出现。相反,这些元素是使用AJAX下载的,因此,您在页面加载上执行的绑定没有捕获这些元素。这就是为什么在使用jQuery Mobile时,您通常会使用委托事件绑定(在旧版本的jQuery上,称为活动绑定),这甚至适用于稍后添加到DOM中的元素。Reference。
发布于 2013-03-01 12:46:36
jQuery mobile多次使用ajax进行导航,因此元素并不总是存在于DOM中。
这就是人们使用委托事件绑定的原因。
https://stackoverflow.com/questions/15158082
复制相似问题