2012-02-15 82 views
1

下面的代碼中使用的指令replaceWith只改變目標內容一次。如果我發送任何其他對象,警報顯示適當的值,但不是div。「replaceWith」不改變內容

function identify (thisobj) { 
     alert(thisobj.value); 
     $("#test").replaceWith(thisobj.value); 
    } 

目標元素如下所示。

<div id="canvas_container"> 
     <div id="test">This is a test</div> 
    </div> 

正在傳遞各種對象,每個對象都有不同的值。但是,儘管Alert()反映了正確的內容,但#Test只允許一次更改,然後永久保留該值。

+0

謝謝大家的幫助 – DKean 2012-02-15 20:04:10

回答

1

replaceWith刪除#test元素,並與你設定(thisobj.value)替換它。

若要替換元素的內容,請使用.html()(或.text())。

function identify (thisobj) { 
    alert(thisobj.value); 
    $("#test").html(thisobj.value); 
} 
2

您正在用您的新元素替換#test。它不會再工作,除非您替換的元素也匹配該選擇器。

jQuery docs

的.replaceWith()方法去除從DOM含量,並插入與單個呼叫在其位置上的新內容 。

假設你想保持#test元素,你可以使用html方法來代替內容它,而不是元素本身。

+0

@DennisKean - 如果你只是想替換的文本在'#test'內,您可以使用'text'方法或'html'方法,正如我的答案(和其他答案)中所述。 – 2012-02-15 19:51:23

2

.replaceWith()替代整個DOM節點;你應該使用.html(thisobj.value).text(thisobj.value)

1

replaceWith將替換整個元素,來代替#TEST,使用中的內容:

$("#test").html(thisobj.value); 
2

你誤會使用replaceWith:它取代了你所稱的元素,所以在第一次使用後,沒有元素#test了。

你想text也許html

$("#test").text(thisobj.value); 

如果你的價值包含HTML,使用:

$("#test").html(thisobj.value);