我很确定这个问题都是关于正则表达式的。
我正在使用此处找到的 JQM 路由器插件。它使用正则表达式来匹配页面和绑定事件处理程序。在文档中它指出:
一个典型的错误是忘记了 $ 运算符。如果您有两个页面,例如 #product 和 #productList,假设路径“#product”将匹配两个页面,从而导致意外行为
行。所以我有一个#item 页面和一个#items 页面,所以我在#item 前面加上一个$。但现在它根本不绑定事件处理程序。如果我不使用美元,那么项目的绑定将应用于两个页面。这是实际的实现:
var router = new $.mobile.Router([
{"#items": {events:"i", handler: items.controller.init}},
{"#items(?:[?/](.*))?": {events:"bs", handler: items.controller.onPageBeforeShow}},
{"#item": {events:"i", handler: item.controller.init}},
{"#item(?:[?/](.*))?": {events:"bs", handler: item.controller.onPageBeforeShow}},
]);