替换特定文本而不影响样式

时间:2011-01-25 17:42:42

标签: javascript jquery replace

需要在具有id的特定元素中的任何位置替换冒号。这有效但由于某种原因也取代了附加到元素的样式:

(文档)$。就绪(函数(){

  $("#element").each(function () { //for element 
      var s=$(this).text(); //get text
       $(this).text(s.replace(/:/g, ' ')); //set text to the replaced version
  });

});

我尝试将一个类附加到元素,但它没有任何区别。如何在不影响其他任何事情的情况下删除冒号? Demo

3 个答案:

答案 0 :(得分:1)

我认为你想使用.html()方法:http://api.jquery.com/html/

因为根据这个:http://api.jquery.com/text/

它调用DOM方法.createTextNode(),它将特殊字符替换为其等效的HTML实体(例如<的{​​{1}})

<

答案 1 :(得分:0)

当然你并不是说输入类型中的文字被替换为ha! 对于获取innerhtml的输入元素以外的html元素,您应该使用

var s=$(this).html();

答案 2 :(得分:0)

#element中的HTML代码是什么?

如果替换#element中的文字会更改样式,则表示#element也包含一些HTML标记(并且该样式实际应用于这些标记)。

试试这个:

$(document).ready(function() {
  $("#element").each(function () {
    (function trim_colons(el) {
      for (var i = 0; i < el.childNodes.length; ++i) {
          var c = el.childNodes[i];
          if (c.nodeType == 1) trim_colons(c);
          else if (c.nodeType == 3) c.nodeValue = c.nodeValue.replace(/:/g, ' ');
      }
    })(this);
  });
});

这将正确删除:个字符,而不会更改样式。