详解如何在jQuery选择器中使用正则表达式和属性过滤器
这一次,我们来学习使用正则表达式和属性过滤器来指定 jQuery 选择器的方法!
比正则表达式更简单的属性过滤器是什么?
让我们从学习属性过滤器开始,它比正则表达式更容易指定选择器!
首先,jQuery 选择器具有多种规范方法,但利用 HTML 属性的规范方法是我们接下来要介绍的属性过滤器。
例如,假设您有这样的 HTML:
<ul> <li id="sample1">示例1</li> <li id="sample2">示例2</li> <li id="sample3">示例3</li> <li id="sample4">示例4</li> </ul>
指定 jQuery 属性的一般语法是:
HTML元素[属性=属性名]
通过使用上述语法,可以使用任何属性指定选择器。
例如,如果要获取“id=sample2”的元素,将如下所示。
var result = $('li[id="sample2"]'); console.log( result );
执行结果
[li#sample2......]
要注意的一点是指定选择器的方法。由于我们要指定id属性名称为“sample2”的元素,我们可以按照前面的语法写成“li[id="sample2"]”。
而本章的主题“属性过滤器”,是指“属性=属性名”的写法,一般有4种模式。
用“前缀匹配”指定
让我们从第一个模式“前缀匹配”开始!在前面的示例中,通过编写“属性=属性名”,我们获得了任意属性名称一致的HTML元素。
“前缀匹配”可以检索所有匹配属性名开头的字符串的元素,只需添加“^”,如“属性^=属性名”。请参阅下面的示例!
<body> <ul> <li id="sample1">示例1</li> <li id="test1">测试1</li> <li id="sample2">示例2</li> <li id="test2">测试2</li> </ul> <script> var result = $('li[id^="sample"]'); console.log( result ); </script> </body>
执行结果
[li#sample1, li#sample2......]
在这个例子中,放置了不同id属性名的“li元素”,通过写“id^=”sample”,将所有属性名以“sample”开头的元素都提取出来。
从执行结果可以看出,“sample1,sample2”的每个元素都被提取出来了。前缀匹配是一个函数,如果属性名称开头的字符串部分匹配,则可以提取所有内容。
用“后缀匹配”指定
接下来,我们来谈谈反向匹配。如果你认为这与前面提到的前缀匹配相反的话很容易理解,但它是一个提取所有与属性名称末尾的字符串部分匹配的元素的函数。
写法是添加“$”,如“属性$=属性名”。请看下面的样本案例!
<body> <ul> <li id="sample-text">示例1</li> <li id="test-sample">测试1</li> <li id="title-text">示例12</li> <li id="list-text">测试2</li> </ul> <script> var result = $('li[id$="text"]'); console.log( result ); </script> </body>
执行结果
[li#sample-text, li#title-text, li#list-text......]
在这个例子中,放置了几个属性名称以“text”结尾的元素,并通过编写“id $=”text“”来提取所有匹配的元素。查看执行结果,可以看到“sample-text、title-text、list-text”这三个被成功提取。
换句话说,后缀匹配通过检索与属性名称结尾部分匹配的所有元素。
用“部分匹配”指定
现在让我们了解部分匹配!与之前的“前缀/后缀匹配”不同,它是一种灵活的规范方法,可以提取指定的字符串是否包含在属性名称中的某处。符号方法通过添加 '*' 来实现,例如 '属性 *= 属性名'。
请参阅下面的示例!
<body> <ul> <li id="sample-text">示例文本</li> <li id="test-sample">测试样本</li> <li id="title-text">标题文字</li> <li id="list-text">列表文本</li> <li id="list-sample-text">列出示例文本</li> </ul> <script> var result = $('li[id*="sample"]'); console.log( result ); </script> </body>
执行结果
[li#sample-text, li#test-sample, li#list-sample-text......]
此示例提取在其属性名称中的任何位置具有字符串“sample”的所有元素。
查看执行结果,可以看到“sample-text、test-sample、list-sample-text”这三个已经被成功提取。
“部分匹配”可能是最简单、最灵活和最方便使用的功能,因为它只需要指定的字符串位于属性名称中的某个位置。
用“不等于”指定
我们来看看“不等于”。请注意,这意味着将提取除指定属性名称之外的所有元素,并且不会像以前那样定位指定的属性名称。描述方法只是添加“!”,如“属性 != 属性名”。
请参阅下面的示例!
<body> <ul> <li class="test">测试样本</li> <li class="title">标题文本</li> <li class="list">列表文本</li> <li class="list">列出示例文本</li> </ul> <script> var result = $('li[class!="list"]'); console.log( result ); </script> </body>
执行结果
[li.test, li.title......]
在这个例子中,它的意思是提取除类名“list”之外的所有元素,所以可以看到我们提取的是“test,title”这两个元素。
不等于一般适用于排除具有相同属性名称的元素的情况,所以class、name等属性居多。
如何使用正则表达式指定多个选择器?
通过使用正则表达式,可以指定比“属性过滤器”更详细的条件。
正则表达式不能在 jQuery 选择器中直接指定,但可以通过指定 HTML 父元素后的方法组合来实现。
使用each()方法
首先,让我们使用 jQuery 中经常使用的each()方法来指定选择器吧。步骤是指定所有的HTML元素,使用“each”判断各元素是否符合正则表达式并提取。
请参阅下面的示例!
<body> <ul> <li class="test-sample">测试样本</li> <li class="title-123">标题文本</li> <li class="list-text">列表文本</li> <li class="list-sample-102">>列出示例文本</li> </ul> <script> var result = []; $('li').each(function( index, element ) { var value = element.className.match(/-d+/); //提取字符串-数字的class if( value ) result.push( $(this) ); }) console.log( result ); </script> </body>
执行结果
0: [li.title-123] 1: [li.list-sample-102]
在这个例子中,使用“each”指定“element”作为函数的第二个参数,其中包含每个 HTML 元素。并且可以看到每个HTML元素的类名都使用了正则表达式“/-d+/”,并提取带有以“-”开始的数字类名的元素。
如果使用“match()”,不满足条件会返回“null”,所以可以使用IF语句进行条件分支。
如何使用filter
现在,让我们尝试使用“filter”指定一个正则表达式!顾名思义,“filter”是一种专门用于条件提取的方法,因此可以用比“each”更简单的描述来实现。
请参阅以下示例。
<body> <ul> <li class="test-sample">测试样本</li> <li class="title-123">标题文本</li> <li class="list-text">列表文本</li> <li class="list-sample-102">列出示例文本</li> </ul> <script> var result = $('li').filter(function( index, element ) { return element.className.match(/-d+/); //提取字符串-数字的class }) console.log( result ); </script> </body>
执行结果
0: li.title-123 1: li.list-sample-102
在这个例子中,“filter”用来指定“element”作为函数的第二个参数,每个HTML元素都存放在这个里面。与“each”的区别在于,只有符合正则表达式的条件式的元素才能“返回(return)”。
通过“return”,只返回满足条件的元素,所以从执行结果可以看出,只有匹配的“li元素”才输出到变量“result”。“filter”的语法直观易懂,适合使用正则表达式来指定选择器。
结语
这次我们学习了如何在jQuery选择器中使用正则表达式和属性过滤器!
基于以上内容,让我们尽自己最大的努力将其运用到编程中去吧!
本文来源:词雅网
本文地址:https://www.ciyawang.com/jquery-each-filter.html
本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。
相关推荐
-
jQuery淡入:提高网站用户体验的利器
在现代Web设计中,用户体验是至关重要的一环。一个好的用户体验能够吸引许多用户,使他们留在你的网站上,而一个糟糕的用户体验则可能导致用户迅速离开你的网站。在这个背景下,jQuery淡入成为了提高网站用...
-
使用jQuery Parents方法和Parent来操作DOM元素
在前端开发中,操作DOM元素是一个非常重要的任务。而jQuery是一个非常常用的JavaScript库,它提供了很多方法来方便地操作DOM元素。而其中,Parents方法和Parent方法就是两个非常...
-
如何使用jQuery获取textarea的值
在前端开发中,获取用户输入的数据是非常重要的。而textarea是一种常见的文本输入框,本文将介绍如何使用jQuery获取textarea的值。1. 获取textarea的值要获取textarea的值...
-
【jQuery入门】总结如何用replace()替换字符串
replace()方法是什么? 下面就从replace方法的基础知识开始学习吧!replace方法是一种允许您用任何字符替换字符串的方法。 它对一般的字...
-
获取jquery文本表单的输入事件
编写一个示例代码,在jquery的“on”方法中使用“touchmove”获取文本表单的输入事件。获取文本表单的输入事件要获取文本表单的输入事件,请在“on”方法中指定“input”。$('指...
-
使用jQuery在指定的html标签中插入html代码
编写一个示例代码,使用jquery的wrapInner()方法在指定的html标签插入插入html代码。在指定的html标签中插入html代码wrapInner()方法可以在指定的html标签插入插入...
-
详解如何使用jQuery的submit()方法提交表单
这次,我们来学习一下“submit()”方法,它可以让你从jQuery中操作Form元素的提交!什么是submit()那么我们先从“submit()”方法的基础知识说起吧!“submit()”是一种允...
-
详解jQuery使用contents()方法获取指定元素的子元素和文本节点
这一次,让我们通过一个示例来了解如何使用 jQuery 的“contents()”方法。 如果只是简单的“选择子元素”,可以在children()方法中使用,但在选择“不...
-
详解jQuery使用.show()/.fadeIn()淡入指定元素
这一次,让我们通过一个示例来解释如何使用jQuery的“.show( )/.fadeIn()”。.show()/.fadeIn() 的作用是什么?.show()/.fadeIn()可以“淡入显示dis...
-
详解jQuery使用fadeTo()方法改变指定元素的透明度
这一次,让我们通过一个示例来解释如何使用 jQuery 的“.fadeTo()”。fadeTo()方法 的功能是什么?fadeTo() 方法是逐渐改变被选元素的不透明度为指定的值(褪色效果)。但是,这...