jQuery如何交换“&amp;”的每个实例将<span>标记附加到每个元素</span>

时间:2009-08-12 10:46:22

标签: php jquery

就像标题所说的那样,

我希望能够在页面加载时搜索#wrapper内的文字。

如果有“&”,我希望它应用span标记,并附加一个类span。 即: 如果找到“hello & Welcome” 它最终应该像“hello <span class="amp">&</span> Welcome”。

我确实有一些代码我一直在尝试,但都没有用,所以包含它是没有意义的。 任何帮助都是伟大的家伙,谢谢。

编辑一直在使用

<script type="text/javascript">  
    $(document).ready(function() { 
     $("#wrapper").html( $("#wrapper").html().replace(/&amp;/g, '<span class="amp">&amp;<"+"/span>') ); 
    }); 
</script>

这会在firebug中加载错误,告诉我它不是函数:

$不是一个功能 $(document).ready(function(){

编辑: oops忘了包含我对jQuery的引用..

这有效。

<script type="text/javascript">  
    $(document).ready(function() { 
       $("#wrapper").html( $("#wrapper").html().replace(/&amp;/g, '<span class="amp">&amp;<"+"/span>') ); 
    }); 
</script>

2 个答案:

答案 0 :(得分:1)

你看过jquery.highlight了吗?它似乎做你想要的 - 正确的方式(通过仅在文本节点内搜索等)

$("#wrapper").highlight('&');

进一步解释。想象一下以下场景:

 <div id='wrapper'>This &amp; should become highlighted.  
    And a picture: <img src='momanddad.jpg' alt='Mom &amp; Dad' /></div>

毯子regexp替换将捕获这两个&amp;次出现并返回:

 <div id='wrapper'>This <span class="amp">&amp;</span> should become highlighted.  
    And a picture: <img src='momanddad.jpg' alt='Mom <span class="amp">&amp;</span> Dad' /></div>

这显然会打破你的img标签。 jquery突出显示插件将避免这种情况。

答案 1 :(得分:0)

为了便于阅读,我会重新考虑;

var html = $("#wrapper").text().replace(/&/g,'<span class="amp">&</span>');
$("#wrapper").html(html);

虽然我认为这是对DOM的额外调用。