2012-11-14 65 views
2

如何使用jQuery將「章節標題」移動到「1.1」旁邊,以便它讀取......「1.1章節標題」,同時保持其他所有內容相同?jquery - 操縱元素內的文本

<p> 
    1.1 
    <a name="_Toc159407685"></a> 
    <a name="_Toc161121797"></a> 
    <a name="_Toc208282996"></a> 
    <a name="_Toc315779471"></a> 
    <a href="link.jpg"> 
    <img class="img" alt="" src="link.jpg"> 
    </a> 
    Chapter Title 
</p> 
+0

這個問題一定有一些缺失。你爲什麼想這樣做,而不是手動編輯它? – FixMaker

+0

「章節標題」是怎麼到達的? – Roman

+0

它到達那裏,因爲Microsoft Word生成可怕的HTML。 –

回答

6

給你:

$("p").append($("p *").detach());​ 

DEMO:http://jsfiddle.net/MwDc6/

+1

+1:很好的解決方案 –

+0

這是不會在我的複雜文件中工作,但是,我已經接受並將重新正確地詢問... –

1

你可以這樣說:

$('p:contains("1.1")').each(function(){ 
    var text = $(this).text(); 
    txt = text.replace(new RegExp("chapter title", "g"), ''); 
    txt = text.replace(new RegExp("1.1", "g"), '1.1 chapter title'); 
    $(this).html(txt); 
}); 
+0

+1極端字面! –

2

我建議一個純JavaScript方式:

function moveTitle(el) { 
    if (!el) { 
     return false; 
    } 
    else { 
     var titleNode = el.lastChild, 
      title = document.createTextNode(titleNode.nodeValue.trim()), 
      number = el.firstChild; 
     el.removeChild(titleNode); 
     el.insertBefore(title, number.nextSibling); 
    } 
} 

moveTitle(document.getElementsByTagName('p')[0]); 

JS Fiddle demo

雖然這並作出一些假設:

  • 要移動將始終是元素的最後一個子標題,
  • 這最後的孩子會總是textNode,和
  • 你會總是想要將標題移動到元素的第一個子元素之後的位置。

這些假設當然可以改變或適應;但考慮到您的要求,它應該足以滿足您的使用情況。