如何将jQuery的$(this).text().match(r)写法转换为原生JavaScript?
改写方案
你需要替换的if判断逻辑直接写 i.textContent.match(r) 即可,和原jQuery逻辑完全等价。
逻辑对应说明
- jQuery 中
$(this).text()的作用是获取当前DOM元素的全部纯文本内容,原生JavaScript直接读取DOM元素的textContent属性即可实现完全相同的效果 - 若仅需要判断是否匹配正则、不需要获取具体的匹配结果,更推荐使用
r.test(i.textContent)写法,性能更优,无需生成额外的匹配结果数组
完整改写后代码
const word = document.getElementById("searchField").value; const r = new RegExp("(" + word + ")", "ig"); const pickComp = document.querySelectorAll('.list-item'); // 现代浏览器支持NodeList直接调用forEach,无需转Array,兼容性要求高可保留Array.from pickComp.forEach((item) => { if (item.textContent.match(r)) { // 原匹配后执行的逻辑直接放在此处即可 } })
内容的提问来源于stack exchange,提问作者JustMe
相关产品推荐
相关产品推荐

