1
$(".name:not(:empty)").text("John");

$(".special").filter( function() {
    return $(this).text() !== 'Admin Aaron'
    && $(this).text() !== 'Martinet Mod';
}).text("");

目前使用此代码,此过滤器将页面上所有非空名称更改为 John,并将所有特殊类更改为空,除非它们中有 Admin Aaron 或 Martinet Mod。但是,如果有人不填写姓名字段,而是填写特殊字段,最终会发生的情况是他们的帖子完全没有姓名,因为它对姓名字段中没有任何内容的帖子没有任何作用

我怎样才能使包括空名称在内的所有名称都过滤到约翰,除了在特殊课程中带有管理员 Aaron 和 Martinet Mod 的帖子?

<span class="namepart">
<span class="name">foo</span>
<span class="special">bar</span>
</span>

普通用户无法将 Admin Aaron 或 Martinet Mod 放在特殊字段中。

4

2 回答 2

0

你的选择器

$(".name:not(:empty)").text("John");

只是在寻找非空的名称跨度。如果要更改空名称跨度的文本,则应将代码更改为

$(".name:empty)").text("John");

编辑: 根据您的评论:

让我重新措辞。|Mods 完全独立,特殊和名称| |普通用户有特殊完全删除,并且name设置为john,不管什么。|

  1. 模组完全独立:所以我们不必在这里做任何事情
  2. 普通用户已完全删除特殊用户,并将名称设置为 john

首先,让我们确定谁是普通用户(不是模组)然后我们将其文本设置为空,然后我们找到其兄弟名称并将其设置为 John

$(".special").not(function (index, elem) {
    return $(elem).text() == "Martinet Mod" || $(elem).text() == "Admin Aaron";
}).text('').siblings('span.name').text('John');
于 2013-06-15T16:16:53.133 回答
0

如果一个依赖于另一个,也许您可​​以嵌套这两个语句而不是将它们分开。

$(".special").filter( function() {
    var ret = $(this).text() !== 'Admin Aaron'
    && $(this).text() !== 'Martinet Mod';
    if (ret) {
        $(this).find(".name").text("John"); // if .name is a child of special
        //or
        $(this).parent().find(".name").text("John"); // if .name is unique to its parent
        // or maybe even better
        $(this).siblings(".name").text("John"); // if name is a unique sibling to special?
    }
    return ret;
}).text("");
于 2013-06-15T15:59:08.320 回答