我需要帮助一件事:
这是我的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>
OUTPUT中我想要的是什么:
<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 :(得分: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 :(得分: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>");
});
}
这应该适合你(但不清楚你是否可以像这样突破/退出选择器字符串。让我知道它是否好。
答案 2 :(得分: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>");
});
});
答案 3 :(得分: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:contains('和')包围的术语本身替换所有逗号分隔的术语。它们将以与原始字符串相同的方式用逗号分隔。
答案 4 :(得分:0)
如果您提前知道字符串,那么简单的解决方案就是使用多个选择器,如下所示:
$("h3:contains('Some Text1'), h3:contains('Some Text2'), h3:contains('Some Text3')").each(function() {
$(this).append("<span>Some Text</span>");
});