0

我有一个标签元素:

<form id="new_user">
<div id="first-name">
<label for="user_profile_attributes_first_name"><abbr title="required">*</abbr> First name</label>
</div>
</form>

当#new_user 有.team-registration 时,我想用团队名称替换文本名字。这样做会更好吗?

  if $('#new_user').hasClass('team-registration') {
    ....
  }

谢谢!

4

2 回答 2

2

你不能在一个选择器中结合这两个条件吗?至于实际的替换,$.html也接受函数(从 jQuery 1.4 开始):

$("#new_user.team-registration").html(function(i, html) {
    return html.replace("First name", "Team name");
});

这是一个小提琴

注意:我正在使用html而不是text看起来#new_user包含其他元素。text将删除这些标签并为您提供纯文本,而html对实际的innerHTML.

注意:string.replace(string, string)仅替换第一次出现的. 如果您需要替换所有匹配项,请使用正则表达式:

    return html.replace(/First name/g, "Team name");
于 2012-06-07T09:46:13.003 回答
0

我建议:

if $('#new_user').hasClass('team-registration') {
    var text = $(this).text();
    $(this).text(text.replace('First','Team')
}

在上面我选择只替换字符串'First',因为第二个单词('name')在两者之间是一致的。

当然,我会注意到id="new_user"您提供的标记中没有元素,所以我强烈建议您确保使用正确的id选择器,因为这种方法将替换匹配元素中的文本,它不会尝试在匹配元素的后代元素中搜索要替换的字符串。

参考:

于 2012-06-07T09:44:34.410 回答