2010-05-06 79 views
3

我需要帮助的一两件事之一:jQuery的,选择,包含文本

这是我的jQuery的想法:

 var text = "Some Text1, Some Text2, Some Text3"; 


     $("h3:contains('"+even one of this string+"')").each(function() { 
       $(this).append("<span>Some Text</span>"); 
     }); 

这是我的HTML

  <h3 class="test1">Some Text2</h3> 

      <h3 class="test1">Some Text1</h3> 

      <h3 class="test3">Another Text</h3> 

我想在输出:

   <h3 class="test1"> 
       Some Text2 
       <span>Some Text</span> 
      </h3> 

      <h3 class="test1"> 
       Some Text1 
       <span>Some Text</span> 
      </h3> 

      <h3 class="test3">Another Text</h3> 

谢谢!

+0

文本的数量可以不同,串 – AlexC 2010-05-06 01:33:44

回答

4

快速的jQuery

var text = "Some Text1, Some Text2, Some Text3"; 

$(document).ready(function(){ 
    $(text.split(", ")).each(function(i,v){ 
    $('h3:contains("'+ v +'")').append('<span>Some text</span>'); 
    }) 
}) 

快速demo

1

你想:

$("h3:contains('Some Text1'), h3:contains('Some Text2'), h3:contains('Some Text3')").each(function() { 
      $(this).append("<span>Some Text</span>"); 
    }); 

编辑

针对OP评论,请注意,您可以执行以下操作:

var text = "Some Text1, Some Text2, Some Text3"; 

text.replace(/\s?([^,]+?)(,)|\s([^,]+?)$/g, "h3:contains('$1$3')$2"); 

要生成元素列表。

然后你做:

var text = "Some Text1, Some Text2, Some Text3"; 

text.replace(/\s?([^,]+?)(,)|\s([^,]+?)$/g, "h3:contains('$1$3')$2"); 

$(text).each(function() { 
      $(this).append("<span>Some Text</span>"); 
    }); 

这将替换所有的逗号由H3包围这个词本身分隔的术语:包含(“和”)。这些将以与原始字符串相同的方式用逗号分隔。

+0

的也可以是百分之文字 – AlexC 2010-05-06 01:32:55

0

简单的解决办法,如果你事先知道你的字符串是使用多个选择,像这样:

$("h3:contains('Some Text1'), h3:contains('Some Text2'), h3:contains('Some Text3')").each(function() { 
    $(this).append("<span>Some Text</span>"); 
}); 
3
var text = "Some Text1, Some Text2, Some Text3"; 

var aText = text.split(","); //splits into array on comma delimiter 


for (var i = 0; i < aText.length; i++) { 
    $("h3:contains('" + aText[i] + "')").each(function() { 
     $(this).append("<span>Some Text</span>"); 
    }); 

} 

这应该为你工作(但不清楚的,如果你能打破输入/输出的选择串那样的。让我知道它的好。

3

只需遍历标题并在$(this).text()上进行正则表达式匹配即可。你甚至可以到自定义选择这个,如果你真的想:

$.extend($.expr[':'], { 
    matches: function(node, index, args, stack) { 
    var re = new RegExp(args[3]); 
    return !!$(node).text().match(re); 
    } 
}); 

$(function() { 
    $('h3:matches("Some Text[123]")').each(function() { 
    $(this).append("<span>Some Text</span>"); 
    }); 
});