2011-01-25 86 views
1

需要用冒号代替在特定元素中找到冒号的地方。这工作,但由于某种原因,同时也取代连接到元素的样式:()函数({在不影响样式的情况下替换特定文本

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

})

$(文件)。就绪;

我试着给元素附上一个类,但它没有区别。我如何删除冒号而不影响其他内容? Demo

+0

#element中包含的HTML代码是什么? – arnaud576875 2011-01-25 17:51:37

回答

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); 
    }); 
}); 

这将正确删除:字符,不改变风格。

1

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

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

它调用DOM方法.createTextNode(),它取代有特殊字符HTML表示(如&lt;<

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

它只是_removes_ **转义**通过翻译**实体**回纯文本,这是完全预期。另一方面,真的是'`没有被返回(它们不是文本) – arnaud576875 2011-01-25 17:58:13

+0

你是对的,谢谢你,从我的答案中删除。 – vinhboy 2011-01-25 17:59:54

+1

直接在HTML代码中替换`:`可能是危险的;可以在名称空间标签名称(``)上使用`:`,属性名称(``;或属性值(``)例如;-) – arnaud576875 2011-01-25 18:06:54

0

当然,你没有打算把输入类型的文本换成哈! 对于除输入元件之外的抓取innerHTML的HTML元素,你应该使用

var s=$(this).html(); 
相关问题