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

这篇文章将为大家详细讲解有关JQuery ID选择器中的不能包含特殊字符的处理方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创新互联主要从事成都网站设计、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务景县,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

问题的起因是动态生成的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出现。

关于JQuery ID选择器中的不能包含特殊字符的处理方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


标题名称:JQueryID选择器中的不能包含特殊字符的处理方法
分享网址:http://azwzsj.com/article/jeooid.html