用相应的unicode字符替换某些单词的脚本不起作用

时间:2013-04-06 19:07:06

标签: javascript jquery regex

我正在尝试使用Unicode字符替换<nav>锚点中的某些单词,每个锚一个单词。

但是,这个脚本似乎不起作用,因为view-source中的文本是单词而不是Unicode字符......

我做错了什么?

有没有更好的方法来做我正在尝试做的脚本:

$("nav li a").text(function(i,currentText) {
    switch($(this).innerHTML()){
        case "CV":
            return currentText.replace(/CV/g, "&#xe00c;");
            break;
        case "down":
            return currentText.replace(/down/g, "&#xe00d;");
            break;
        case "Work":
            return currentText.replace(/Work/g, "&#xe010;");
            break;
        case "About":
            return currentText.replace(/About/g, "&#xe00f;");
            break;
        case "Resume":
            return currentText.replace(/Resume/g, "&#xe00e;");
            break;
        case "Mail":
            return currentText.replace(/Mail/g, "&#xe011;");
            break;
        case "Facebook":
            return currentText.replace(/Facebook/g, "&#xe013;");
            break;
        case "Twitter":
            return currentText.replace(/Twitter/g, "&#xe014;");
            break;
        case "Dribbble":
            return currentText.replace(/Dribbble/g, "&#xe015;");
            break;
        default:
            break;      
    }
 });

1 个答案:

答案 0 :(得分:0)

您尝试将HTML替换为HTML实体,但是您要调用.text()而不是.html()

没有必要使用.replace(),因为无论如何你将要替换整个字符串。只需返回实体。

您不会在“查看来源”视图中看到您的更改。这只是显示加载页面时的源代码。

如果您不进行任何替换,则应返回“currentText”。

$("nav li a").html(function(i, curHtml) {
  switch(curHtml){
    case "CV":
        return "&#xe00c;";

    case "down":
        return "&#xe00d;";

    // etc

    default:
      return currentHtml;
});