2012-06-07 176 views
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登記。如何更好地做到這一點?

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

謝謝!

回答

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"); 
+0

請注意,我有<標題簡稱=「需要」> *之前替換它是文本 –

+0

@RooticalV。你想簡單地用''Team name''替換'#new_user.team-registration'中的所有內容*嗎?或者你想讓它產生'「 *團隊名稱」'?此外,您問題中的HTML代碼段與您所需的條件不符。如果您更新了問題以包含正確的HTML以及預期產生的HTML,它會有所幫助。 –

+0

我編輯過html。是的,我只想要將文本替換爲 *即可離開。 謝謝! –

0

我建議:

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

在上面,我只選擇了替換字符串「First`,因爲第二個字(」名')是在兩者之間保持一致。

我當然會注意到,在您提供的標記中沒有id="new_user"元素,所以我強烈建議您確保使用正確的id選擇器,因爲此方法將取代文本在匹配元素內,將不會嘗試搜索匹配元素的後代元素以查找要被替換的字符串。

參考文獻: