javascript - 用于锚文本或标题属性的 JQuery 过滤器
问题描述
我正在尝试过滤标题或锚文本,以便例如“lala2”或“text2”或“2”将其他人切换走(在这种情况下为1)......我想要不包含该字符串的锚消失。
<input id="myInput" type="text" placeholder="Search..">
<div id="myList">
<a class="someclass" title="title text lalalala1" href="blah.com">some anchor text1</a>
<a class="someclass" title="title text lalalala2" href="blah2.com">some anchor text2</a>
etc
</div>
$(document).ready(function(){
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#myList a").filter(function() {
$(this).toggle($(this).text.toLowerCase().indexOf(value) > -1)
});
});
});
尝试:过滤 this.title
$("#myList a, #myList a[title]").filter(function()
以及有无 $(this).toggle.parent() 和其他一些东西。它适用于锚点内的文本,即切换不包含“值”的锚点,但不能让它为锚点标题属性和直接锚点文本做到这一点。
解决方案
更改:
•keyup → input
更可预测 - 即使您同时按下多个键,也适用于复制粘贴。
• filter → each
— 只需要任何循环,但不需要过滤元素列表。
• $(this).text().toLowerCase()
— 为 text() 添加了括号 — 这是一个 jQuery 函数。
• includes()
— 本机JavaScript 字符串方法。检查一个字符串是否包含另一个字符串。如果您只想检查而不是获取它的索引,则最好使用它。返回true
或false
• ||
— 表示布尔表达式中的“或”(顺便说一下&&
——“与”)
$("#myInput").on("input", function() {
var value = $(this).val().toLowerCase();
$("#myList a").each(function() {
$(this).toggle(
$(this).text().toLowerCase().includes(value) ||
$(this).attr('title').toLowerCase().includes(value)
);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="myInput" type="text" placeholder="type 'lala2'...">
<div id="myList">
<a class="someclass" title="title text lalalala1" href="blah.com">some anchor text1</a>
<a class="someclass" title="title text lalalala2" href="blah2.com">some anchor text2</a> etc
</div>
推荐阅读
- formal-languages - 形式语言和编译器。30个矿脉问题
- java - ACTION_MEDIA_BUTTON 在尝试了几乎所有我能做的事情后没有调用接收器
- google-chrome - Nginx Round Robin 负载均衡 上游服务器不按顺序排列,chrome、firefox、IE浏览器之间的行为变化
- gitlab - 如何从 Gitlab 管道 YML 文件中包含 Jira 字段(测试存储库)
- amazon-web-services - Yaml 文件无法 lint
- typescript - 在打字稿中使用字符串而不是枚举
- semaphore - 当线程持有二进制信号量然后再次尝试获取它时会发生什么?
- swift - IBDesignable 自定义 NSControl 类 - Interface Builder 中的框架未调整大小
- r - 如何将R列表按行合并到data.frame中
- android - Flutter 包依赖解析问题