Jquery如何更改TEXT_NODE

时间:2013-12-15 04:28:31

标签: jquery

我是Jquery的新手并且有一个可能令人困惑的问题。但是非常感谢你检查这个。我想修改元素中的文本。例如:

<div class="testit">test it for no.1 and test.com <img=...> <a href="http://test.com/">test it</a></div>
<div class="testit">another test for No.2 and test2.com and test.com <img=...> <a href="http://test2.com/">test2</a> Another description</div>

我想使用JQuery修改每个类“testit”元素中的“some text conents”部分,但我确实希望保持其他标记元素不变。例如:所需的输出将是:

<div class="testit">test it for no.1 and <a href="http://test.com">test.com</a> <img=...> <a href="http://test.com">test it</a></div>
<div class="testit">another test for No.2 and <a href="http://test2.com">test2.com</a> and <a href="http://test.com">test.com</a> <img=...> <a href="http://test2.com/">test2</a> Another description</div>

以下JQuery可以获取原始内容但无法修改它们。你能建议我如何更改jquery程序吗?

var getTextNodesIn = function(el) {
  return jQuery(el).find().andSelf().contents().filter(function() {
    return this.nodeType == Node.TEXT_NODE;
  });};
var current_text=getTextNodesIn(this);
current_text.text('new contents here');

1 个答案:

答案 0 :(得分:0)

添加了一个Regex来检测字符串是否包含值

var count = 1;
$('.testit').each(function () {
//check if the test string is found
var str = $(this).text();
var patt = new RegExp("test.com");
var res = patt.test(str);
if(res){
    $(this).text("new text contents No." + count); 
    count++; 
}
});