广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >JQuery ID选择器中的不能包含特殊字符的处理方法
  • 426
分享到

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

2024-04-02 19:04:59 426人浏览 泡泡鱼
摘要

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

这篇文章将为大家详细讲解有关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选择器中的不能包含特殊字符的处理方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: JQuery ID选择器中的不能包含特殊字符的处理方法

本文链接: https://www.lsjlt.com/news/85997.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JQuery ID选择器中的不能包含特殊字符的处理方法
    这篇文章将为大家详细讲解有关JQuery ID选择器中的不能包含特殊字符的处理方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。问题的起因是动态生成的Dom...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作