如果element有类替换元素'text'和'some text'

时间:2012-06-07 09:42:16

标签: jquery

我有一个标签元素:

<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') {
    ....
  }

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

这里是fiddle

注意:我使用html代替text,因为#new_user包含其他元素。 text会移除这些标记并为您提供平面文字,而html会对实际innerHTML采取行动。

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

    return html.replace(/First name/g, "Team name");

答案 1 :(得分:0)

我建议:

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

在上文中,我选择只更换字符串&#39; First`,因为第二个字(&#39; name&#39;)在两者之间是一致的。

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

参考文献: