【经验】JQuery ID选择器中的不能包含特殊字符(=,@ etc.)

话说今天碰到一个怪事,以前写的流程图插件运行都是正常的,连接到外网测试数据库后怎么都运行不起来了。于是超找了半天才发现问题所在。新的数据库在返回的JSON数据中,ID加了后缀“@yjcs”(为了区别不同企业最后添加上去的)。于是JQ的ID选择器无法正常寻找解析了。

详细原因如下:

查看Jquery的源代码可以看到堆选择器的解析有这么一段:

    var match = quickExpr.exec( selector );

            // Verify a match, and that no context was specified for #id
            if ( match && (match[1] || !context) ) {

                // HANDLE: $(html) -> $(array)
                if ( match[1] )
                    selector = jQuery.clean( [ match[1] ], context );

                // HANDLE: $("#id")
                else {
                    var elem = document.getElementById( match[3] );
其中quickExpr是个正则表达式对象

quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,

^#([\w-]+)$是判断ID选择符,很明显只能匹配包括下划线的任何英文字符数字和下划线中划线。

所以其他的字符如= @等都会出现问题。你解决的办法可以修改JQuery代码中的正则表达式

如我要添加=号,那么我可以改成quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-\=]+)$/,

或者避免出现=的ID出现。。随便,本文只是为了大家遇到类似问题时可以快速找到问题。。

 

 

 


阅读本文后,您的心情是:
 
恶心
愤怒
强赞
感动
路过
无聊
雷囧
关注
知识共享许可协议
评论(0) 浏览(15983) 引用(0)
引用地址:http://blog.baiwand.com/tb.php?sc=deedbf&id=103
Tags:
« 【分享】优雅地失败:创业成功的秘密 【解决】WebFreer无法使用 && 广告去除 && 首页设置?解决方案 »

Blogger

  • blogger
  • 天之骄子
  • 职位:研发工程师
    铭言:
    阳光与欢乐同在,
    与我同在
    主页:
    blog.baiwand.com

分类目录

日志归档

主题标签

数据统计

  • 日志:151篇
  • 评论:45条
  • 碎语:264条
  • 引用:0条

链接表

随机日志 »

最新日志 »

最新评论 »

标签云 »

订阅Rss
sitemap