我有一个标签元素:
<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') {
....
}
谢谢!
答案 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
选择器,因为这种方法将替换匹配元素中的文本,所以赢了尝试搜索匹配元素的后代元素以查找要替换的字符串的出现。
参考文献: