91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-11-15 21:28:28 來源:億速云 閱讀:613 作者:柒染 欄目:web開發

這篇文章將為大家詳細講解有關JQuery 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" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<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" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<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出現。

關于JQuery ID選擇器中的不能包含特殊字符的處理方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

法库县| 鄂温| 静安区| 陈巴尔虎旗| 永州市| 北安市| 泊头市| 北海市| 砀山县| 华宁县| 视频| 富平县| 霍山县| 南华县| 灵璧县| 柏乡县| 洛川县| 花莲县| 德钦县| 大同县| 和静县| 和田市| 澄迈县| 丘北县| 霍邱县| 会理县| 碌曲县| 麻江县| 昌邑市| 万荣县| 满洲里市| 宁明县| 穆棱市| 库伦旗| 上高县| 湘阴县| 星子县| 项城市| 阳江市| 吴桥县| 体育|