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

时间:2013-06-15 15:49:09

标签: javascript jquery

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

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

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

除了在特殊类中使用Admin Aaron和Martinet Mod的帖子之外,我怎样才能使所有名称(包括空名称)过滤到John?

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

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

2 个答案:

答案 0 :(得分: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("");

答案 1 :(得分:0)

你的选择者

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

仅查找非空名称范围。如果要更改空名称范围的文本,则应将代码更改为

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

修改 根据你的评论:

  

让我改写。 | Mods完全独立,特殊和名称|   |常规用户已完全删除,名称设置为   约翰,无论如何。|

  1. Mods完全不受影响:所以我们不必在这做任何事情
  2. 常规用户已完全删除,名称设置为john
  3. 首先,让我们确定谁是普通用户(不是mods) 然后我们将其文本设置为nothings 然后我们找到它的兄弟名字并将其设置为John

    $(".special").not(function (index, elem) {
        return $(elem).text() == "Martinet Mod" || $(elem).text() == "Admin Aaron";
    }).text('').siblings('span.name').text('John');