我试图让jQuery检查这个列表中的所有数据过滤器,如果它在word之间找到一个空格,它应该替换为",“。(我需要那些课程)。
这是我尝试过的,但是当我检查控制台时,它说“替换不是一个函数”。
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三“时,应该将其替换为".class .three”。
发布于 2014-01-25 11:39:43
你可以用.attr()来做
$('.filter-list a[data-filter]').attr('data-filter', function (i, attr) {
return attr.replace(/\s+/g, ", .");
});
演示:小提琴
您的代码失败,因为在each()
处理程序中,this
引用dom元素,$(ths)
返回一个没有替换方法的jQuery对象
发布于 2014-01-25 11:48:58
在您的代码中:
$('.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,", ."));
});
https://stackoverflow.com/questions/21350018
复制相似问题