成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JQuery ID選擇器中的不能包含特殊字符的處理

開發 前端
最近在開發一個界面時發現了某些特殊情況下ID選擇器就會出現無效的情況,查明是ID選擇器中的不能包含特殊字符的原因。本文將介紹解決方法。

問題的起因是動態生成的Dom 元素的ID中包含“=”導致(你可能會問為什么會在ID中有“=”號,我只能說這種情況雖然不多,但是有,比如我的情況,我的ID是某個字符串Base64編碼之后的字符串)。

JQuery中的1.2.6版本至1.3.2版本都有這種情況,下面是測試的代碼:

view plaincopy to clipboardprint?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html xmlns="<head> 
    <title></title> 
    <script src="Javascript/jquery.1.3.2.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
        $(function() {              
            var div = $("#hellodiv=");  
            if (div.length > 0) {  
                alert("獲取到了Div");  
            }  
            else {  
                alert("哎呀ID中不能包含=");  
            }  
            var div2 = document.getElementById("hellodiv=");  
            if (div2) {  
                alert("我可以獲取到哦");  
            }  
            else {  
                alert("哎呀我也獲取不到");  
            }  
        });  
    </script> 
</head> 
<body> 
    <div id="hellodiv="></div> 
</body> 
</html> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html xmlns="<head>
    <title></title>
    <script src="Javascript/jquery.1.3.2.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {           
            var div = $("#hellodiv=");
            if (div.length > 0) {
                alert("獲取到了Div");
            }
            else {
                alert("哎呀ID中不能包含=");
            }
            var div2 = document.getElementById("hellodiv=");
            if (div2) {
                alert("我可以獲取到哦");
            }
            else {
                alert("哎呀我也獲取不到");
            }
        });
    </script>
</head>
<body>
    <div id="hellodiv="></div>
</body>
</html>查看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出現。。隨便,本文只是為了大家遇到類似問題時可以快速找到問題。

【編輯推薦】

  1. 使用jQuery和PHP構建一個受Ajax驅動的Web頁面
  2. 使用 jQuery 簡化 Ajax 開發
  3. 跟ASP.NET MVC一起使用jQuery
責任編輯:彭凡 來源: 博客園
相關推薦

2012-06-12 09:43:11

jQuery

2010-09-07 12:56:49

id選擇器CSS

2010-12-27 16:01:45

jQuery選擇器

2010-07-20 10:11:32

jQuery選擇器Sizzle

2010-09-26 16:51:03

SQL Server查

2010-06-25 09:04:43

jQuery選擇器

2013-12-02 14:22:14

jQuery選擇器

2013-03-11 10:30:56

CSSWeb

2009-07-16 11:02:33

Swing文件選擇器

2010-09-03 09:30:29

CSS選擇器

2010-09-06 09:50:34

id選擇器CSS

2010-08-26 12:53:40

CSSid選擇器

2015-07-13 11:28:22

Linux文件名

2011-04-26 15:07:48

jQuery

2009-11-26 09:52:05

jQuery選擇器

2023-01-30 08:42:33

CSS選擇器性能

2012-04-16 14:32:31

iOS選擇器代碼

2010-09-07 10:19:31

SQL語句

2025-02-28 09:14:09

JavaNIO機制

2020-10-25 08:57:56

CSS前端瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩综合精品 | 中文日韩在线 | 成人在线视频免费观看 | 一区二区精品 | 一区二区三区欧美 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 日韩在线国产精品 | 亚洲一区综合 | 黑人粗黑大躁护士 | 97成人免费 | 久久一区二区免费视频 | 国产成人av免费看 | 91在线播| 亚洲视频免费观看 | 久久久久免费精品国产小说色大师 | 一级毛片在线视频 | 午夜影院在线观看视频 | 欧美一区二区在线观看 | 99久久精品免费看国产四区 | 日韩福利在线 | 久久亚洲一区二区三区四区 | 成人永久免费视频 | 日韩免费高清视频 | 午夜精品一区二区三区在线观看 | 欧美国产精品一区二区三区 | 久久精品国产亚洲夜色av网站 | 一区二区三区免费 | 久久久久久免费毛片精品 | 一级做a爰片性色毛片视频停止 | 欧美高清性xxxxhdvideosex | 亚洲色综合| 国产第二页 | 欧美精品99 | 国产精品久久久久久久久久久久 | 成人一级黄色毛片 | 国产精品久久久久久影视 | 成人在线不卡 | 亚洲精品第一国产综合野 | 欧美舔穴| 二区中文 | 在线看免费的a |