jQuery 包含从一个列表到另一个列表的不敏感数据搜索
jQuery contains insensitive search for data from one list to another
我有2个"lists"
一个是标签列表:
<span class="blog-tags minor-meta">
<span>
<a rel="tag">3d printing</a>
<a rel="tag">art</a>
<a rel="tag">medical</a>
<a rel="tag">Prototyping</a>
</span>
</span>
和另一个服务列表
<ul class="sp_sectors">
<li>Engineering</li>
<li>Automotive</li>
<li>Medical</li>
<li>Prototyping</li>
<li>ART</li>
</ul>
我正在尝试搜索标签列表中的每个标签(如果它存在于服务列表中)并向其添加 "class = active":
例如,第一个标签“3d printing”.. 搜索 "sp_sectors" 列表(未找到 = 没有任何反应,移动到第二个标签并再次搜索,第二个标签是 "art",现在我们在第二个列表,我们找到艺术“
ART ”..但它是大写的所以我真的不能"find"它..)
这是我编写的用于搜索列表的代码:
jQuery('.blog-tags > span > a').each(function() {
var thi_tag = jQuery(this).html();
jQuery('.sp_sectors li').each(function() {
jQuery(".sp_sectors li:contains('" + thi_tag + "')").addClass('active');
});
});
在这种情况下我该怎么做 :contain insensitive?有谁可以帮助我吗?谢谢
如您所见,:contains
区分大小写。一种替代方法是在 filter()
中构建您自己的逻辑,它使用不区分大小写的正则表达式匹配两个元素的文本。另请注意,内部 each()
循环不是必需的。
$('.blog-tags > span > a').each(function() {
var aText = $(this).text();
$('.sp_sectors li').filter(function() {
return RegExp(aText, 'gi').test($(this).text());
}).addClass('active');
});
.active { color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="blog-tags minor-meta">
<span>
<a rel="tag">3d printing</a>
<a rel="tag">art</a>
<a rel="tag">medical</a>
<a rel="tag">Prototyping</a>
</span>
</span>
<ul class="sp_sectors">
<li>Engineering</li>
<li>Automotive</li>
<li>Medical</li>
<li>Prototyping</li>
<li>ART</li>
</ul>
希望能解决你的问题
jQuery('.blog-tags > span > a').each(function() {
var searchText = $(this).text();
jQuery('.sp_sectors').find( ":contains('" + searchText + "')" ).addClass('active');
});
.active { color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="blog-tags minor-meta">
<span>
<a rel="tag">3d printing</a>
<a rel="tag">art</a>
<a rel="tag">medical</a>
<a rel="tag">Prototyping</a>
</span>
</span>
<ul class="sp_sectors">
<li>Engineering</li>
<li>Automotive</li>
<li>Medical</li>
<li>Prototyping</li>
<li>ART</li>
</ul>
我有2个"lists"
一个是标签列表:
<span class="blog-tags minor-meta">
<span>
<a rel="tag">3d printing</a>
<a rel="tag">art</a>
<a rel="tag">medical</a>
<a rel="tag">Prototyping</a>
</span>
</span>
和另一个服务列表
<ul class="sp_sectors">
<li>Engineering</li>
<li>Automotive</li>
<li>Medical</li>
<li>Prototyping</li>
<li>ART</li>
</ul>
我正在尝试搜索标签列表中的每个标签(如果它存在于服务列表中)并向其添加 "class = active": 例如,第一个标签“3d printing”.. 搜索 "sp_sectors" 列表(未找到 = 没有任何反应,移动到第二个标签并再次搜索,第二个标签是 "art",现在我们在第二个列表,我们找到艺术“
这是我编写的用于搜索列表的代码:
jQuery('.blog-tags > span > a').each(function() {
var thi_tag = jQuery(this).html();
jQuery('.sp_sectors li').each(function() {
jQuery(".sp_sectors li:contains('" + thi_tag + "')").addClass('active');
});
});
在这种情况下我该怎么做 :contain insensitive?有谁可以帮助我吗?谢谢
如您所见,:contains
区分大小写。一种替代方法是在 filter()
中构建您自己的逻辑,它使用不区分大小写的正则表达式匹配两个元素的文本。另请注意,内部 each()
循环不是必需的。
$('.blog-tags > span > a').each(function() {
var aText = $(this).text();
$('.sp_sectors li').filter(function() {
return RegExp(aText, 'gi').test($(this).text());
}).addClass('active');
});
.active { color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="blog-tags minor-meta">
<span>
<a rel="tag">3d printing</a>
<a rel="tag">art</a>
<a rel="tag">medical</a>
<a rel="tag">Prototyping</a>
</span>
</span>
<ul class="sp_sectors">
<li>Engineering</li>
<li>Automotive</li>
<li>Medical</li>
<li>Prototyping</li>
<li>ART</li>
</ul>
希望能解决你的问题
jQuery('.blog-tags > span > a').each(function() {
var searchText = $(this).text();
jQuery('.sp_sectors').find( ":contains('" + searchText + "')" ).addClass('active');
});
.active { color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="blog-tags minor-meta">
<span>
<a rel="tag">3d printing</a>
<a rel="tag">art</a>
<a rel="tag">medical</a>
<a rel="tag">Prototyping</a>
</span>
</span>
<ul class="sp_sectors">
<li>Engineering</li>
<li>Automotive</li>
<li>Medical</li>
<li>Prototyping</li>
<li>ART</li>
</ul>