正则表达式匹配 JQM 路由器插件中的“项目”但不匹配“项目”
Regex to match "Item" but not "Items" in JQM Router Plugin
我很确定这个问题都是关于正则表达式的。
我正在使用此处找到的 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}},
]);
$
匹配正则表达式中字符串的末尾。你不想把它放在开头,你想把它放在最后。
例如:
#product
matches
#product
#productList
#product$
matches
#product
试试这个代码:
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}},
]);
你必须后缀,而不是前缀,即
#items$
#items(?:[?/](.*))?$
#item$
#item(?:[?/](.*))?$
相关文章:
- 高库存时期时间与时区不匹配
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- Javascript:图像与单选按钮的值不匹配
- 文本区域(jQuery)的结果不匹配
- '填隙'当所述项目不在容器中时,将一些项目与引导程序网格对齐
- 如果状态不匹配,则缩小为丑陋
- 为什么我网页的facebook点赞数与该网页的facebook页面不匹配
- jquery ias插件不适用于我的网站,加载更多项目不起作用
- 使用jscodeshift添加表达式时,错误{..}与类型字符串不匹配
- JavaScript正则表达式不匹配
- row.entity.xxxx属性doensn'排序后不匹配
- Url.Content中的Url不匹配
- 控件坐标与组坐标不匹配
- 使用正则表达式查找字符串中的不匹配字符
- 如果项目不匹配,则显示变量
- 正则表达式匹配 JQM 路由器插件中的“项目”但不匹配“项目”
- Lodash 从与值数组不匹配的数组中获取项目
- AngularJS选择列表与所选项目不匹配
- Jquery同位素过滤淡化不匹配的项目,而不是隐藏
- 自动完成ajax请求只有当项目从以前的ajax请求数据不匹配