新聞中心
這篇文章將為大家詳細講解有關(guān)JQuery ID選擇器中的不能包含特殊字符的處理方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)景縣,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
問題的起因是動態(tài)生成的Dom 元素的ID中包含“=”導(dǎo)致(你可能會問為什么會在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選擇符,很明顯只能匹配包括下劃線的任何英文字符數(shù)字和下劃線中劃線。
所以其他的字符如= @等都會出現(xiàn)問題。你解決的辦法可以修改JQuery代碼中的正則表達式
如我要添加=號,那么我可以改成quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-\=]+)$/,
或者避免出現(xiàn)=的ID出現(xiàn)。
關(guān)于JQuery ID選擇器中的不能包含特殊字符的處理方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
文章標(biāo)題:JQueryID選擇器中的不能包含特殊字符的處理方法
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/jeooid.html