2012-12-30 69 views
0

一個div我有像這樣的結構:更改只是文本中使用jQuery

<div class="comment"> 
    Some text goes here. 
    <div class="controls"> 
     Controls go here. 
    </div> 
</div> 

我怎麼能取代只是「一些文本到這裏」,而不會影響controls DIV?

很明顯,另一個div可以添加在「有些文字在這裏」,然後它的內容被替換,但爲了這個問題,我假設我不能。

回答

3

這是可能的,而無需修改現有的HTML。只需使用jQuery來查找文本節點,然後通過直接訪問DOM來更改其值。

$('.comment').contents()[0].nodeValue = 'Some other text goes here.'; 

.contents() jQuery的文檔和.nodeValue的MDN文檔。

+0

謝謝,這個偉大的工程。 – bevanb

0

而不是文本週圍的「div」,可能是跨度,因此它是內聯的。或使用:

<div class="comment"> 
    Some text goes here. 
    <div class="controls"> 
     Controls go here. 
    </div> 
</div> 
<script> 
    var c = $('.comment').eq(0); 
    c.html(c.html().replace('Some text goes here', 'Blah blah blah')); 
</script> 
0

我想是這樣的:

$(function() { 
    var children = $('.comment').children(); 
    $('.comment').text('har').append(children); 
});​ 
0

使用jQuery找到controls格,然後將其轉換爲DOM節點,並使用本地JS來更改文本

var textNode=$('.comment').find('.controls')[0].previousSibling 
    textNode.nodeValue='New Text From Script' 

DEMO:http://jsfiddle.net/tmGDW/