Javascript 将所有名称更改为john,而不将mod名称更改为john

Javascript 将所有名称更改为john,而不将mod名称更改为john,javascript,jquery,Javascript,Jquery,使用这段代码,这个过滤器将页面上的所有非空名称更改为John,并将所有特殊类更改为空,除非其中包含Admin Aaron或Martinet Mod。 但是,如果有人没有填写“姓名”字段,而是填写了“特殊”字段,那么最终的结果是他们的帖子完全没有名字,因为它对“姓名”字段中没有名字的帖子没有任何作用 我怎样才能使所有的名字,包括空名字过滤到约翰除了管理员亚伦和马丁内特Mod在特殊类的帖子 $(".name:not(:empty)").text("John"); $(".special").fil

使用这段代码,这个过滤器将页面上的所有非空名称更改为John,并将所有特殊类更改为空,除非其中包含Admin Aaron或Martinet Mod。 但是,如果有人没有填写“姓名”字段,而是填写了“特殊”字段,那么最终的结果是他们的帖子完全没有名字,因为它对“姓名”字段中没有名字的帖子没有任何作用

我怎样才能使所有的名字,包括空名字过滤到约翰除了管理员亚伦和马丁内特Mod在特殊类的帖子

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

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

福
酒吧

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

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

<span class="namepart">
<span class="name">foo</span>
<span class="special">bar</span>
</span>
您的选择器

$(".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("");
仅查找非空的名称范围。如果要更改空名称范围的文本,应将代码更改为

$(".name:not(:empty)").text("John");
编辑: 根据你的评论:


让我重写一下|MOD是完全独立的、特殊的和命名的| |常规用户已完全删除特殊用户,并且名称设置为 约翰,不管怎样|

  • MOD完全处于孤立状态:因此我们不必在这里做任何事情
  • 常规用户已完全删除特殊用户,并且名称设置为john
  • 首先,让我们确定谁是常规用户(不是MOD) 然后我们将它的文本设置为nothings 然后我们找到它的兄弟名字,并把它设为约翰

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

    也请发布HTML。那么,用户是如何填充这些跨距的呢?没有HTML,我不知道是否有唯一标识符,所以我猜测。名称可能是。special的子项,但似乎不是这样。没有唯一标识符。在特殊字段中有简单的带有Admin Aaron的帖子,普通用户无法复制,因此我必须使用特殊字段的内容来确定哪些要更改名称的帖子不是特殊的子帖子。name和special是同级元素吗?它们都是某个元素的子元素,在该元素中没有其他具有类名或special的子元素?如果mods name字段不是空的,那么这将起作用。mods的名称仅在special类中。他们的名字是我不明白。。它是名称还是特殊?普通用户可以将foo(bar)(bar)作为特殊字段。他们也可以有(bar)、foo和johndoe(如果他们没有在任何一个输入中放入任何内容)mod,另一方面,当mod发布时,有(modspecial)作为name字段的html输出。目前,我的代码对完全为空的名称字段的帖子没有任何作用。这对于过滤器来说是一个美学问题,因为一篇文章可能没有名字,也没有特殊的内容(因为只有特殊的输入)。在过滤器运行后,只有mod posts应该有一个空白的name字段。让我重写一下|MOD完全独立,special和name | | |普通用户完全删除了special,name设置为john,不管发生什么|
    $(".special").not(function (index, elem) {
        return $(elem).text() == "Martinet Mod" || $(elem).text() == "Admin Aaron";
    }).text('').siblings('span.name').text('John');