2011-12-02 34 views
0

今天下午我問了一個有點類似問題,然後實現爲偉大的答案是我的問題是不正確的......通過識別與使用Javascript/jQuery的正確textnode移除從列表中>

給出以下:

<p class="p"> 
<div> </div> 
<div> 
<a href="foo"> a </a> &gt; 
<a href="foo1"> b </a> 
<a href="foo2"> c</a> 
<a href="foo3"> b </a> &gt; 
<a href="foo4"> c </a> 
</div> 
</p> 

我需要刪除「& GT」`從頁面還有一個標籤它前面。這是一個動態列表,因此它會隨着時間的推移而不斷增長。我需要某人鎖定「>」,將其刪除,然後移除它之前的標籤。

有什麼建議嗎?

回答

2

您的標記無效。 <div>元素將被踢出<p>

糾正你的標記後,你可以這樣做:

var els = $('.p'); 

do { 
    els.contents().each(function(i,el) { 
     if(el.nodeType === 3 && $.trim(el.data) === '>') { 
      el.parentNode.removeChild(el.previousSibling); 
      el.parentNode.removeChild(el); 
     } 
    }); 
} while((els = els.children()).length) 

JSFIDDLE DEMO


或者多一點的jQuery:

var els = $('.p'); 

do { 
    els.contents().each(function(i,el) { 
     if(el.nodeType === 3 && $.trim(el.data) === '>') { 
      $(el.previousSibling).remove(); 
      $(el).remove(); 
     } 
    }); 
} while((els = els.children()).length) 

JSFIDDLE DEMO


或者這樣:

var els = $('.p'); 

do { 
    els.contents().each(function(i,el) { 
     if(el.nodeType === 3 && $.trim(el.data) === '>') { 
      $(el.previousSibling).add(el).remove(); 
     } 
    }); 
} while((els = els.children()).length) 

JSFIDDLE DEMO

+0

工作一個魅力感謝再如 –

+0

@MartinBrody:不客氣。 – RightSaidFred

相關問題