.replace通过使用jQuery添加span来给出错误

时间:2013-04-15 07:49:20

标签: jquery replace html

我使用此代码将“Holla”替换为孔位置上的“Holla Hee”:

$("td").each(function () {
    if ($(this).children().length == 0) {
        $(this).html($(this).html().replace('Holla','<span class="txtWarn">Holla Hee</span>'));
    }
});

http://validator.w3.org给出错误:

  

错误行205,第79列:文档类型不允许元素“span”在这里

…s).html().replace('Holla','<span class="txtWarn">Holla Hee</span>'));

还有另外一种方法吗? (无法将脚本保存到外部js。文件中)

2 个答案:

答案 0 :(得分:1)

您可以尝试&lt; and &gt;

替换这个:

 $(this).html($(this).html()
        .replace('Holla','<span class="txtWarn">Holla Hee</span>'));

用这个:

$(this).html($(this).html()
       .replace('Holla','&lt;span class="txtWarn"&gt; Holla Hee &lt;/span&gt;'));

更新

您可以尝试使用变量:

var span = '<span class="txtWarn"> Holla Hee </span>';
$(this).html($(this).html().replace('Holla', span));

Demo

答案 1 :(得分:0)

如果您的代码位于文档的<head>,则可以尝试使用CDATA

    <script type="text/javascript">
    //<![CDATA[
    $(function(){
       $("td").each(function () {
         if ($(this).children().length == 0) {
            $(this).html($(this).html().replace('Holla','<span class="txtWarn">Holla Hee</span>'));
         }
       });
    });
    //]]>
    </script>

如果Holla中只有td,则另一种方法可能会使用.html()来添加代码。

$(function () {
    $("td").each(function () {
        var td = $(this);
        if (td.children().length == 0 && td.text() === 'Holla') {
            td.html('<span class="txtWarn">Holla Hee</span>');
        }
    });
});

请注意,要使其正常工作,td必须与<td>Holla</td>完全相同,且不得有任何空格。