jQuery选择器特殊字符与属性空格问题


Posted in jQuery onAugust 14, 2017

一、选择器中含有特殊符号的注意事项

1.选择器中含有“.”、“#”、“(”或“]”等特殊字符

根据W3C的规定,属性值中是不能含有这些特殊字符的,但在实际项目中偶尔会遇到表达式中含有“#”和“.”等特殊字符,如果按照普通的方式去处理出来的话就会出错。解决此类错误的方法是使用转义符转义。

<div id="id#b">bb</div> 
< div id="id[1]">cc</div>

不能这样写:

$('#id#b'); 
$('#id[1]');

应该使用转义符号:

$('#id\\#b'); //转义特殊字符“#”
$('#id\\[1\\]'); //转义特殊字符“[ ]”

2.属性选择器的引号问题
1.3.1版本彻底放弃了1.1.0版本遗留下的@符号,如果你使用1.3.1以上的版本,那么你不能在属性前添加@符号,比如:
$('div[@title="test"'];

正确的写法是:

$('div[title="test"'];

二、选择器中含有空格的注意事项

选择器中的空格也是不容忽视的,多一个空格或少一个空格也许会得到截然不同的结果。看下面这个例子,它的HTML代码如下:

<div class="test"> 
<div style="display:none;">aa</div> 
<div style="display:none;">bb</div> 
<div style="display:none;">cc</div> 
<div class="test" style="display:none;">dd</div> 
< /div> 
< div class="test" style="display:none;">ee</div> 
< div class="test" style="display:none;">ff</div>

使用如下的jQuery选择器分别获取它们。

//注意区分类似这样的选择器 
//虽然一个空格,却截然不同的效果. 
var $t_a = $('.test :hidden'); 
var $t_b = $('.test:hidden'); 
var len_a = $t_a.length; 
var len_b = $t_b.length; 
alert("$('.test :hidden') = "+len_a); //输出 4 
alert("$('.test:hidden') = "+len_b); //输出 3

之所以会出现不同的结果,是因为后代选择器与过滤选择器的不同。

var $t_a = $('.test :hidden'); //有空格 是选取class为“test”的元素里面的隐藏元素。

var $t_b = $('.test:hidden'); //没有空格 则是选取隐藏的class为“test”的元素。

这点和css是一样的 css中假如有个div有两个class属性.top 和 .right <div class="top right "></div>,在css中我们要选择它定义样式只能这样写 .top.right{ } 而不能写成.top .right{ }

以上是小编为大家总结的全部内容啦,希望对大家的学习有所帮助~~

jQuery 相关文章推荐
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
Aug 18 jQuery
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 jQuery
jQuery中过滤器的基本用法示例
Oct 11 jQuery
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 jQuery
jquery实现的简单轮播图功能【适合新手】
Aug 17 jQuery
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
jQuery内容选择器与表单选择器实例分析
Jun 28 jQuery
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
JQuery基于FormData异步提交数据文件
Sep 01 jQuery
jQuery实现手势解锁密码特效
Aug 14 #jQuery
jQuery 中msgTips 顶部弹窗效果实现代码
Aug 14 #jQuery
jQuery:unbind方法的使用详解
Aug 14 #jQuery
jQuery 实时保存页面动态添加的数据的示例
Aug 14 #jQuery
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 #jQuery
jquery.uploadView 实现图片预览上传功能
Aug 10 #jQuery
jquery对table做排序操作的实例演示
Aug 10 #jQuery
You might like
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
Node.js文件操作详解
2014/08/16 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
Nodejs libuv运行原理详解
2019/08/21 NodeJs
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
python继承和抽象类的实现方法
2015/01/14 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
护士专业推荐信
2013/11/02 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
大学班长竞选稿
2015/11/20 职场文书
党章学习心得体会2016
2016/01/14 职场文书
学校教代会开幕词
2016/03/04 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书