2011-07-14 71 views
14

我有一個像這樣的結構創建項目列表的腳本:如何使用jQuery刪除元素內的文本?

<li> 
    <div>Some stuff</div> 
    <a href="http://www.mysite.com/">New Item</a> 
    (1 vote) 
</li> 

我在想,如果有一種方法來<div><a>標籤移除外部的一切,在這種情況下,(1票)字符串,用jQuery或普通的javascript。

在此先感謝!

+1

這有你想要的一切: http://stackoverflow.com/questions/298750/how-do-i-select-text-nodes-with-jquery – benhowdle89

回答

24

這應該工作。

$("li").contents().filter(function(){ return this.nodeType != 1; }).remove(); 

或通過指定的文本明確節點

$("li").contents().filter(function(){ return this.nodeType == 3; }).remove(); 

看到這個fiddle

+4

確實有意義謝謝!最後使用'$('ul li')。contents()。filter(function(){ return this.nodeType == Node.TEXT_NODE; })。remove();' – javiervd

+0

相當有用,謝謝! – ithil

1

使用jQuery的nextAll

+0

沒有運氣:(我認爲它是因爲文本實際上並不是一個元素,只是文本在那裏,我用'$('li li')。nextAll()。remove();' – javiervd

+0

對不起,我錯過了,只爲相同類型的下一個元素(http:// sandbox.phpcode.eu/g/d18fc.php) – genesis

0
$('li').not('div,a').text('') 

試試這個,未經測試

編輯

$('li').contents().filter(function(){ return !(this.tagName == 'DIV' 
              || this.tagName == 'A');}).remove(); 
+0

不,它不起作用:http://sandbox.phpcode.eu/g/-247fd6d2e7667cb8732e56d5043f96db.php – genesis

+0

不幸運:(儘管 – javiervd

0
$('li').html($(this).children()) 

你可以嘗試這個,它應該工作。清潔和簡單。

+0

有趣的想法,但HTML只需要一個字符串。你可以做'.empty()。append(children)',但是你必須在你做之前存儲這些孩子 – megawac