2

jQueryを使用して、「ChapterTitle」を「1.1」の横に移動して「1.1ChapterTitle」と表示し、他のすべては同じままにするにはどうすればよいですか?

<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>
4

3 に答える 3

6

はい、どうぞ:

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

デモ:http: //jsfiddle.net/MwDc6/

于 2012-11-14T10:22:00.653 に答える
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フィドルデモ

これはいくつかの仮定をしますが:

  • 移動するタイトルは、常に要素の最後の子になります。
  • その最後の子は常に、、textNode
  • 要素の最初の子に続く位置にタイトルを常に移動する必要があります

もちろん、これらの仮定は変更したり、適応可能にすることができます。しかし、あなたが述べた要件を考えると、それはあなたのユースケースには十分なはずです。

于 2012-11-14T10:44:29.513 に答える
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);
});
于 2012-11-14T10:33:36.720 に答える