我正在尝试让jQuery检查此列表中的所有数据过滤器,如果它在单词之间找到空格,则应将其替换为“,”。 (我需要那些课程)。
这是我尝试过的,但是当我检查控制台时,它说“替换不是一个功能”。
HTML
<ul class="filter-list" data-option-key="filter">
<li>
<a data-filter=".class one" class="" href="#filter">class one</a>
</li>
<li>
<a class="" href="#filter" data-filter=".class two">class two</a>
</li>
<li>
<a class="" href="#filter" data-filter=".class three">class three</a>
</li>
</ul>
的jQuery
$('.filter-list a[data-filter]').each(function () {
$(this).replace(/\s/g,", .");
});
基本上,当jQuery找到“.class three”时,它应该用“.class .three”替换它。
答案 0 :(得分:2)
您可以使用.attr()来执行此操作
$('.filter-list a[data-filter]').attr('data-filter', function (i, attr) {
return attr.replace(/\s+/g, ", .");
});
演示:Fiddle
您的代码失败,因为在each()
处理程序中,this
引用了dom元素,而$(ths)
返回了一个没有替换方法的jQuery对象
答案 1 :(得分:0)
在您的代码中:
$('.filter-list a[data-filter]').each(function () {
$(this).replace(/\s/g,", .");
});
$(this)
是一个DOM元素。您可以按$(this).text()
获取文字。所以你的代码可能是这样的:
$('.filter-list a[data-filter]').each(function () {
$(this).text($(this).text().replace(/\s/g,", ."));
});