2012-10-01 103 views
2

我的HTML使用查找和使用jQuery

<div id="sample-reminder"> 
    <div id="reminder_0000"> 
     <input type="text" name="val_0000" value="1"> 
    </div> 
</div> 

我的代碼

rigaHtml = $('#sample-reminder').clone(); // i have to work on a clone of dom 
rigaHtml.find('input[name^=val_]').val(99); 
rigaHtml.html().replace(/0000/g, 987654321); 

最後命令替換不能代替我的佔位符 '0000'。 如果我發現()前更換移動(),我不能」使用發現:-(

回答

2

你不需要在這種情況下使用.clone()

var rigaHtml = $('#sample-reminder').html(); 
$(rigaHtml.replace(/0000/g, 987654321)) 
    .find('input[name^=val_]') 
    .val(99) 
    .appendTo('#container') 

其中'#container'是您希望添加修改後的HTML的節點。

+0

我認爲有一個原因OP說'我必須在克隆上工作'。似乎你比其他人更瞭解OPs的意圖:) +1。 – Nope

+1

@FrançoisWahl這是因爲OP反覆工作;首先需要一個克隆,否則'.val()'會更新樣本div(這是隱藏的)。 '.replace()'後來出現了,但那時候需要一種新的方法:) –

0

您需要設置的結果返回。

var html = rigaHtml.html().replace(/0000/g, 987654321); 
rigaHtml.html(html); 
+0

似乎不工作:-( http://jsfiddle.net/8PBYx/ – Roberto

0

你沒有做任何事情與replace返回值。這應寫爲:

rigaHtml.html(rigaHtml.html().replace(/0000/g, 987654321)); 

即使這樣,rigaHtml不在DOM,因爲它是原始元素的副本所以你還是不會看到一個明顯的變化,除非你把它放回了DOM內部。 。

1

假設你正在尋找改變的#reminder_0000id財產和val_0000name屬性,試試這個:

$rigaHtml = $('#sample-reminder').clone(); 
var $input = $("input", $rigaHtml); 
var $div = $input("div", $rigaHtml); 

$input.val(99).attr("name", $input.attr("name").replace(/0000/g, 987654321)); 
$div.attr("id", $div.attr("id").replace(/0000/g, 987654321)); 
+0

肯定的。但我不得不更換輸入的值。感謝:-) – Roberto

+1

@Roberto看到我的編輯 –