เพิ่มแท็ก span ด้วย id ใหม่ก่อนวงเล็บเหลี่ยมแต่ละอัน

ฉันมีข้อความบางอย่างที่มีการอ้างอิงข้อ ซึ่งฉันต้องเพิ่มแท็ก span โดยอัตโนมัติ (เมื่อมีการเข้าถึงเพจ) ด้วยรหัสใหม่ก่อนวงเล็บเหลี่ยมแต่ละอัน

ป้อนข้อมูล:

<p>some text (Jn 1:2), more text sentences (Gn 5-12, 23 ref) and more etc.</p>

เอาท์พุท:

<p>some text <span id="1">(Jn 1:2)</span>, more text sdfkljgdf <span id="2">(Gn 5-12, 23)</span> and more etc.</p>

ดังนั้นจึงเพิ่มแท็ก span รอบวงเล็บเหลี่ยมแต่ละวงเล็บ ( ) แม้ว่าจะไม่ได้อยู่ในบรรทัดเดียวกันก็ตาม (หากการปิด ) อยู่ในบรรทัดอื่นของโค้ด)

ฉันลองทำสิ่งต่อไปนี้.. และฉันเปิดรับทุกสิ่งที่ทำงานโดยใช้ php หรือ Javascript..

var myString_before = str.split("(")[count];
//alert (myString_before);

//get all text before )
var myString_after = myString_before.split(")")[0];
alert(" ref: " + myString_after);

if (x != true) {
    $('span').each(function (k) {
        var replace_str = $(this).html().replace(/\(/g, '<div 
        style="display: inline" id= "' + pos + '">(</div>');
        $(this).html(replace_str);
    })
}
x = document.getElementsByTagName('div')[count].hasAttribute("style");

person Mike    schedule 21.04.2018    source แหล่งที่มา


คำตอบ (1)


คุณสามารถใช้ .html() และ String.replace:

let i = 0;
$('p').html((_, oldHtml) => 
  oldHtml.replace(/\([^)]+\)/g, match => `<span id="${++i}">${match}</span>`)
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>some text (Jn 1:2), more text sentences (Gn 5-12, 23 ref) and more etc.</p>

(regexp จะจับคู่อะไรก็ได้ระหว่างวงเล็บ รวมถึงวงเล็บด้วย)

person Jeto    schedule 21.04.2018