JQueryID选择器中的不能包含特殊字符的处理

问题的起因是动态生成的Dom 元素的ID中包含“=”导致(你可能会问为什么会在ID中有“=”号,我只能说这种情况虽然不多,但是有,比如我的情况,我的ID是某个字符串Base64编码之后的字符串)。

网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了利辛免费建站欢迎大家使用!

JQuery中的1.2.6版本至1.3.2版本都有这种情况,下面是测试的代码:

view plaincopy to clipboardprint?
 
 
 
     
     
     
 
 
   

 
 
 




   
   
   


   



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

view plaincopy to clipboardprint?
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] ); 

    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出现。随便,本文只是为了大家遇到类似问题时可以快速找到问题。


网页题目:JQueryID选择器中的不能包含特殊字符的处理
本文链接:http://bzwzjz.com/article/cdgcjpg.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站设计 企业网站设计 品牌网站建设 网站建设 成都网站制作公司 网站建设公司 网站建设方案 网站制作报价 企业手机网站建设 成都网站设计 LED网站设计方案 重庆网站制作 成都网站建设 成都网站设计 泸州网站建设 成都模版网站建设 成都网站设计 自适应网站建设 定制网站设计 成都h5网站建设 网站制作 营销网站建设