jquery
2011-07-25 61 views 2 likes 
2

替換文本我有這樣的標記:與輸入

<div class="outer"> 
    <a class="btn"> 
    <img src="btnImg.jpg" /> 
    </a> 
    Some Title 
</div> 

現在,我需要替換的文本(一些標題東西)與包含當前標題文本框。 我已經試過了:

$(".outer").append("<input value='"+$(".outer").text()+"'></input>"); 
$(".outer").text(""); 

它把一個文本框爲空字符串。我試圖將文本存儲在一個臨時變量中,我嘗試克隆整個外部div,然後獲取文本,並清空原始div中的文本。無論如何,無論我做什麼,在我清除文本後,輸入值也變爲空白。

回答

4

簡單地存儲在一個變量的文本,然後清除之前追加輸入股利。

var $outer = $(".outer"); 
var text = $.trim($outer.text()); 

$outer.empty(); 
$outer.append("<input value='" + text + "'></input>"); 

http://jsfiddle.net/SJeyf/2/

更新基於評論(保留圖像等):

var $outer = $(".outer"); 
var text = $.trim($outer.text()); 

var $textNode = $(".outer").contents() 
        .filter(function(){ 
         return this.nodeType == 3 
           && $.trim($(this).text()).length; 
        }).eq(0) 

$textNode.replaceWith("<input value='" + text + "'></input>"); 

http://jsfiddle.net/SJeyf/4/

注意:有可能是一個更好的辦法來獲取正確的文本節點,但這似乎工作。

+0

和我會失去主播和什麼 – Agzam

+0

沒有意識到你想保存,更新。 –

+0

現在,它的工作原理!謝謝! – Agzam

0

耶,發現它的工作!例如:jsfiddle

var text = $('.outer').text(); 
$('.outer').text('').append($('<input>').val(text)); 
+0

本文中的'this'不是'.outer',你錯過了''',如果你解決了這些問題,這將等同於原始代碼。 –

+0

你在讀什麼?我更新了一段時間。 – Phil

+0

我按照時間戳發佈前30秒,緩存問題我猜。 –

0

嘗試是這樣的:

http://jsfiddle.net/maniator/vsLac/

var text = $.trim($('.outer').text()); 
$('.outer').append($('<input>', {value: text})); 
+0

他不想要那裏的文字 – Phil

+0

@Phil - 那麼鏈接和圖像呢? – Neal

+0

哦。好朋友,我的朋友。 – Phil

1

哇...這是一個有趣的遊...

$(".outer")[0].lastChild.textContent = "blah"; 

http://jsfiddle.net/9uQtJ/

1

的問題是你最後的JavaScript語句。用空字符串替換<div class="outer">…</div>的所有內容。之前插入的輸入元素剛剛被刪除。

您只需要選擇<div class="outer">…</div>的文本子節點即可刪除「Some Title」。看看這個問題:How do I select text nodes with jQuery?

相關問題