2011-06-15 46 views
0

這看起來很奇怪,但是做一個jQuery replace()似乎只在alert()console.log運行時才起作用。jQuery替換出現在日誌/警報中,但不是在實際內容中?

這裏是我試圖運行代碼:

$('.settings_item[data-slide-id=1324] .answers_fields_template li').each(function(index) { 
    var regexp = new RegExp('new_answers', 'g'); 
    var new_id = new Date().getTime(); 
    $(this).html().replace(regexp, new_id); 
}); 

和這裏的html代碼:

<li data-weight="1"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_skeleton" name="survey[questions_attributes][0][answers_attributes][new_answers][skeleton]" type="hidden" value="true"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_text" name="survey[questions_attributes][0][answers_attributes][new_answers][text]" size="30" type="text" value="Great!"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_weight" name="survey[questions_attributes][0][answers_attributes][new_answers][weight]" type="hidden" value="3"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_response_class" name="survey[questions_attributes][0][answers_attributes][new_answers][response_class]" type="hidden" value="rate"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_id" name="survey[questions_attributes][0][answers_attributes][new_answers][id]" type="hidden"> 
</li> 
<li data-weight="2"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_skeleton" name="survey[questions_attributes][0][answers_attributes][new_answers][skeleton]" type="hidden" value="true"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_text" name="survey[questions_attributes][0][answers_attributes][new_answers][text]" size="30" type="text" value="OK"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_weight" name="survey[questions_attributes][0][answers_attributes][new_answers][weight]" type="hidden" value="2"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_response_class" name="survey[questions_attributes][0][answers_attributes][new_answers][response_class]" type="hidden" value="rate"> 
    <input id="survey_questions_attributes_0_answers_attributes_new_answers_id" name="survey[questions_attributes][0][answers_attributes][new_answers][id]" type="hidden"> 
</li> 

我試圖與new_id的內容替換的new_answers所有實例變量。

當我運行,沒有取代。但是,如果我將$(this).html().replace(regexp, new_id);換成alert()console.log(),那麼這些顯示的輸出new_answers應該被替換。

我不明白爲什麼地球上會是這樣,現在我的大腦受傷。

+0

這只是一個意外重複的快速粘貼代碼示例,或者您有多個輸入中的所有重複ID和名稱?如果是這樣,那最終會讓你更加頭疼。 – RwwL 2011-06-15 14:50:49

+0

@RwL:編輯時可能是我沒有正確地閱讀東西。我發現它已被OP回滾和正確編輯。向所有人道歉。 – Bojangles 2011-06-15 20:37:39

+0

奇怪,我仍然看到重複的ID。 – RwwL 2011-06-16 14:55:34

回答

3

您需要將replace d HTML返回給元素。試試這個行:

$(this).html($(this).html().replace(regexp, new_id));

詹姆斯

0

你試圖做一個.replaceWith()?我沒有在jQuery API中看到.replace()

+0

'.html()'會返回一個字符串。 '.replace()'是本地字符串對象的方法... – ShaneBlake 2011-06-15 14:43:58

0
var newHtml = $(this).html().replace(regexp, new_id); 
$(this).html(newHtml); 
相關問題