0

最近开始使用 jQuery Mobile 进行开发,我对事件检测的行为有点迷惑。在标准 jQuery 中,我总是可以使用

$("#someId").on("click",doSomething());

这会奏效。但是,我发现使用 jQuery mobile 我必须通过以下方式将事件处理程序绑定到整个文档:

$(document).on("click","#someId",doSomething());

有谁知道为什么会这样?jQuery mobile 是否以与 jQuery 不同的方式处理事件?

4

2 回答 2

0

jQuery mobile 多次使用 ajax 进行导航,因此元素并不总是存在于 DOM 中。

这就是人们使用委托事件绑定的原因。

于 2013-03-01T12:46:36.233 回答
0

标准 jQuery 绑定在您调用它们时起作用 - 即,当您使用$("#someId").on("click",doSomething());代码加载页面时,它将查找带有someId标识符的元素并将doSomething()回调绑定到它。但是使用 jQuery Mobile,加载页面时某些元素不存在。相反,这些元素是使用 AJAX 下载的,因此,您在页面加载时所做的绑定没有捕获这些元素。这就是为什么使用 jQuery Mobile 您通常会使用委托事件绑定(在旧版本的 jQuery 上,它们被称为实时绑定),即使是稍后添加到 DOM 的元素也可以使用。参考

于 2013-03-01T12:51:13.167 回答