私たちはJavascript/jQueryに依存するWebアプリケーションを作成しています。それは、ユーザーがMad Libsのような種類のテキストの大きなブロックに個々の単語を記入することを伴います。大規模なテキストブロックを作成するために使用する一種のHTMLフォーマットを作成しました。このフォーマットは、ユーザがjQueryを埋め込んだときに操作します。テキストのブロックの親要素内の子要素の前後にあるHTMLを個別に取得するにはどうすればよいですか?
パートは次のようになります。マークアップは、私は別に、内側<span>
の前と後のテキストを取得して操作する必要があることを考えると
<span class="fillmeout">This is a test of the <span>NOUN</span> Broadcast System.</span>
。それらを「接頭辞」と「接尾辞」と呼んでいます。
私はを知っていますそのyou can't parse HTML with simple string manipulation、とにかく試しました。私は<span>
と</span>
タグでsplit()
を使ってみました。それは十分に単純なようだった。残念ながら、Internet ExplorerはすべてのHTMLタグを大文字に変換するため、技術は失敗します。私は特別なケースを書くことができましたが、このエラーは正しい方法でこれを行うよう教えてくれました。
接頭辞と接尾辞を手動で指定するために余分なHTMLタグを使用することはできますが、それは醜く冗長なようです。私は、私たちのマークアップフォーマットをできるだけリーンで読み書き可能なものにしておきたいと思います。
私はjQueryのドキュメントを見てきましたが、私が必要とする機能を正確に実行することができません。 には、さまざまな機能があり、前と後、前後、および内側の要素をに追加しますが、見つからないものはありません。は、すでにあるものがです。私は内部<span>
を取り除くことができましたが、削除された要素の前に何が来たのかをどのように伝えることができるのか分かりません。
私がやろうとしていることを行う「正しい」方法はありますか?
'.contents()は他の答え(私のようなもの)よりも優れていますが、ネイティブDOMノードを繰り返し処理しても、アップコートを与えるのは気にしませんでしたか? '.contents()'を反復する間に、私の答えに含まれているのと同じように、ノード型とtagNameをチェックするのとほぼ同じロジックが必要になります。 – jfriend00
私はちょうどあなたが '.contents()'でも必要な細部をたくさん持っているjsFiddleを使って、テスト済みの実用的な答えをあなたに与えたように感じています。どうして?代わりに、既に提供されている回答とほぼ同じロジックを必要とする独自の回答を投稿します。 SOの観点から見ると、あなたの答え(コードはありません)は、将来の読者が働くコードを含む回答よりも助けになりません。 – jfriend00
@ jfriend00: '.contents()'は私がその機能を知らなかったので私を助けてくれました。あなたの答えは興味深いですが、 'HTML'コードを解析するときには不可能な' HTML'コードを修正する必要があります。 – Max