CONTENTEDITABLE DIVサンプル文字列のみ
int main(){
if((x<3 && x!=5) || x>10)
//execute statement;
while((y<10) && (y>1))
//execute statement;
}
DIV の既存の HTML
<div id="board_code">
<div>int main<span class="openParen bm1">(</span><span class="closeParen bm1">)</span></div>
<div></div>
<div>if<span class="openParen bm2">(</span><span class="openParen bm3">(</span>x<3 && x!=5<span class="closeParen bm3">)</span> || x>10<span class="closeParen bm2">)</span></div>
<div>//execute statement;</div>
<div>while<span class="openParen bm4">(</span><span class="openParen bm5">(</span>y<10<span class="closeParen bm5">)</span> && <span class="openParen bm6">(</span>y>1<span class="closeParen bm6">)</span><span class="closeParen bm4">)</span></div>
<div>//execute statement;</div>
<div>}</div>
</div>
ターゲット HTML
<div id="board_code">
<div>int main<span class="parenWrap"><span class="openParen bm1">(</span><span class="closeParen bm1">)</span></span></div>
<div></div>
<div>if<span class="parenWrap"><span class="openParen bm2">(</span><span class="parenWrap"><span class="openParen bm3">(</span>x<3 && x!=5<span class="closeParen bm3">)</span></span> || x>10<span class="closeParen bm2">)</span></span></div>
<div>//execute statement;</div>
<div>while<span class="parenWrap"><span class="openParen bm4">(</span><span class="parenWrap"><span class="openParen bm5">(</span>y<10<span class="closeParen bm5">)</span></span> && <span class="parenWrap"><span class="openParen bm6">(</span>y>1<span class="closeParen bm6">)</span></span><span class="closeParen bm4">)</span></span></div>
<div>//execute statement;</div>
<div>}</div>
</div>
()
などのペアを持つことで、すでに一致していbm1, bm2
ます。今、私はでラップする必要がありopenParen bm(n)
ますcloseParen bm(n)
span class = parenWrap
どうすればこれを達成できますか?
簡素化
<span class="parenWrap">((x<3 && x!=5) || x>10)</span>
<span class="parenWrap">(x<3 && x!=5)</span>
<span class="parenWrap">((y<10) && (y>1))</span>
<span class="parenWrap">(y<10)</span>
<span class="parenWrap">(y>1)</span>
理解しやすいように、既に持っているスパンタグを保持して、このようになります
@ pdoherty926の回答に基づく更新
ロジックは次のようなものです
//if i have 3 pairs of bm's
for(var xx=1; xx<4; xx++){
$('.openParen bm'+xx).nextUntil('.closeParen bm'+xx).andSelf().wrapAll('<span class="parenWrap"></span>');
}//for
しかし、これは機能していません。