contenteditable="true"
いくつかのhtmlを含むdiv( )があります。特定のクラスのリンクを除いて、div全体のテキストを置き換えようとしています。
私は試した:
$('div#text').not('a.selected').each(function() {
$(this).html = replaceFunction($(this).text))
});
しかし、それは何も置き換えません。
contenteditable="true"
いくつかのhtmlを含むdiv( )があります。特定のクラスのリンクを除いて、div全体のテキストを置き換えようとしています。
私は試した:
$('div#text').not('a.selected').each(function() {
$(this).html = replaceFunction($(this).text))
});
しかし、それは何も置き換えません。
.html
jQueryで定義された関数なので設定したくありません。使用する
$('#text :not(a.selected)').each(function() {
$(this).html(replaceFunction($(this).text())));
});
編集:値として使用していることにも気付き.text
ましたが、それも関数です。.text()
文字列として扱うのではなく、呼び出すように上記を修正しました。
EDIT2: また、セレクターが正しくないため、上記で修正しました。別の要素のページで id を 2 回使用してはdiv#text
なら#text
ないためです。text
セレクターは何も返しません。あなたは、「class=selected の要素ではない id=text の div を与える」と言っています。.children()
div の子を取得するために使用します。
.html
と.text
メソッドです。それらに割り当てることはできません。取得と設定のためのオーバーロードがあります:
.html()
html を取得します。
.html(newhtml)
html を設定します。
次のようなものが必要です。
$('div#text').children().not('a.selected').each(function() {
$(this).html(replaceFunction($(this).text()));
});
これを試して
$(this).html(replaceFunction($(this).text())));
あなたはdivのhtmlを設定していません..しかし、あなたはそれに値を割り当てているようです..何もしません..
また欠落()
している.text()
あなたのコードでは、jQuery は ID "text" を持つすべての div を検索し (1 つある)、結果セットから "selected" のクラスを持つすべてのアンカー要素を削除します (何もありません)。
div#text 内ですべてのコンテンツがあらゆる種類の要素でラップされている場合は、これを試してください。
$('div#text').children().not('a.selected').each(function() {
$(this).html = replaceFunction($(this).text))
});
またはパフォーマンスは低いが、すべてのレベルの発見
$('div#text').find("*").not('a.selected').each(function() {
$(this).html = replaceFunction($(this).text))
});
シンプルなループでバニラ JS を使用して、すべての HTML ノード (テキスト ノードを含む) をスキャンすることもできます。