これはトリックを行います:
HTML:
<!-- Represents html file that will be updated in a cms by client -->
<!-- To be included on each page of site -->
<div id="sp" style="display:none;">
<span data-target=".main-content .selectResultsTxt">
Select an option to see results for a specific year.
</span>
<div data-target="#otherText">Some other text.</div>
</div>
<!-- represents page to apply rule -->
<div class="main-content">
<h4><span class="selectResultsTxt"></span> testing...</h4>
<p><span id="otherText"></span></p>
</div>
Javascript:
$('#sp').children().each(function() {
$($(this).data().target).text($(this).text());
});
ここでフィドルを更新しました: http://jsfiddle.net/VwtWD/7/
</p>
説明:
の子要素をループしてから、div.sp
そのクラスとテキストにアクセスし、ページ上で一致する要素を探して更新します。
私はいくつかの改善を行いました:
ターゲット要素を識別するためのクラスを残し、ユーザーが入力したテキストを格納する要素でデータ バインディングを使用することをお勧めします。.data()
上記の私のソリューションのように、jQuery 関数を介して簡単にアクセスできます。
また、各要素の完全な CSS パスを指定できると、ソリューションをより複雑なページに拡張できるようになると便利です。
個人的には、クライアントがタグまたはまたはなど.html()
を使用したい場合に備えて、テキストだけでなくhtmlを設定するメソッドも使用します。例:<br>
<em>
<img>
$('#sp').children().each(function() {
$($(this).data().target).html($(this).html());
});
その他のフィードバック:
これを実現するためにクライアント側の JavaScript を使用している理由はありますか? サーバー側でそれをかなり簡単に行うことができます(node.jsを使用したjavascriptでも)。これには、次のような多くの利点があります-GoogleなどはSEOの問題であるコンテンツを表示しません-javascriptを使用しないブラウザーが勝ちましたコンテンツが表示されない (確かに、これは非常に少数であるため、問題にはならないかもしれませんが、指摘する価値はあります)
とにかく、クイックハックソリューションとして、それは機能します.