2013-06-05 127 views
0

我有一個父div,裏面有兩個子div。只隱藏父div文本

如何隱藏保持「child1文本」和「child2文本」可見的父div(父文本)的文本。

<div id="parent"> 
    parent text 
    <div id="child1">child1 text</div> 
    <div id="child2">child2 text</div> 
</div> 
+3

你嘗試過什麼嗎? – rlemon

+4

您必須將「父文本」封裝在元素中並隱藏該元素。 –

+0

http://mattgemmell.com/2008/12/08/what-have-you-tried/ – Ted

回答

1

只能隱藏實際元素,和隱藏要素也隱藏了所有的元素孩子,所以你必須包裹textnodes在自己的元素,然後隱藏這些元素:

$('#parent').contents().filter(function() { 
    return this.nodeType==3; 
}).wrap('<span class="text"></span>'); 

$('.text').hide(); 

FIDDLE

+0

謝謝你們所有的解決我的問題。你有什麼使用nodeType == 3 。它的功能是什麼 – Rameez

+0

nodeType == 3意味着Textnodes – Rinku

0

嘗試以下

$('#parent').contents().filter(function(){ 
    return this.nodeType === 3; 
})​.remove();​ 

DEMO

+0

謝謝你所有的解決我的問題 – Rameez

+1

也許你應該提到,你不能簡單地「顯示「文字了,因爲你刪除了它。 –

+0

@FelixKling你是對的。感謝您注意 –

0

如果您堅持直接的HTML/JavaScript,您可以將「父文本」封裝在<span>中。即,

<div id="parent"> 
    <span id="parent-text-id">parent text</span>  
    <div id="child1"> 
     child1 text 
    </div>  
    <div id="child2"> 
     child2 text 
    </div>  
</div> 

這樣,您可以參考該文本,只要你想隱藏它。祝你好運!

+0

@Rameez,我沒有名氣給別人的答案添加評論,所以我只是把評論放在我自己的答案上。本着社區的精神,你應該標記你接受的答案。 – David

1

嘗試

var x = $('#parent').contents().filter(function(){ 
    return this.nodeType == 3 
}).wrap('<span/>').parent().hide() 

演示:Fiddle

+0

謝謝你們所有的人解決了我的問題 – Rameez

0

只是作爲一個備選答案,其他人將返回並藏匿#parent所有文本節點,這樣只會隱藏第一childNode

$(document.getElementById('parent').childNodes[0]).wrap('<span/>').parent().hide();