jQuery:检查数据过滤器并替换空格

时间:2014-01-25 11:37:36

标签: javascript jquery replace

我正在尝试让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”替换它。

2 个答案:

答案 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,", ."));
});