这可以解决问题:
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>
标签 or <em>
or<img>
等。示例:
$('#sp').children().each(function() {
$($(this).data().target).html($(this).html());
});
其他反馈:
您是否有理由使用客户端 javascript 来实现这一目标?您可以很容易地在服务器端执行此操作(即使在带有 node.js 的 javascript 中),这将有很多好处,包括 - Google 等不会看到对 SEO 来说是个问题的内容 - 没有 javascript 的浏览器赢了'看不到内容(诚然,这是一个非常小的数字,因此可能不是问题,但值得指出)
无论如何,作为一种快速破解解决方案,它是有效的。