我想使用JQuery重新排序包含某个单词的所有数据。.find()框架就我所知道的元素而不是字符串中的项目起作用。
目前数据安排如下:
<div>A single zones 1,2 and 3 Tube ticket to £2.20</div>
<div>A single zones 1,2 and 4 Bus ticket to £2.20</div>
<div>A zones 1,2 and 3 Ferry ticket to £2.20</div>
我想查找DIV中是否包含“单个”字样,并在区域数据后将其移入,以便故障单类型反映它是否为单个。
<script type="text/javascript">
$(document).ready(function(){
$('div').each(function(){
if($(this).find('single')) { };
});
});
</script>
到目前为止我已经到了。显然,虽然这不会起作用。有什么想法吗?
编辑这是我想要的结果:
<div>A zones 1,2 and 3 single Tube ticket to £2.20</div>
<div>A zones 1,2 and 4 single Bus ticket to £2.20</div>
<div>A zones 1,2 and 3 Ferry ticket to £2.20</div>
答案 0 :(得分:1)
您可以这样做:
$("div:contains(single)").html(function(i,currentVal) {
return currentVal.replace(/single /,"")
.replace(/ (Tube|Bus|Ferry)/," single $1");
});
演示:http://jsfiddle.net/nnnnnn/R3V63/
这使用":contains"
selector查找具有单个“单词”的所有div,然后使用.html()
method和回调语法,该语法允许在提供的每个值处理一个值回调函数将传递每个元素的当前html内容,并且返回值成为新内容。
要“移动”单词“single”我首先用空字符串替换它,然后在任何单词“Tube”,“Bus”或“Ferry”之前插入它。显然,如果要包含一些其他运输方式,则可以修改正则表达式。考虑到可能的变化,如“1区”,“2区和3区”等,试图通过匹配“1区,2区和3区”找到正确的位置似乎太麻烦了。
有关详细信息,请参阅doco on .replace()
。
编辑:备用正则表达式匹配“区域......”(毕竟不是那么麻烦):
.replace(/(zones?(?:[\d, ]|and)+) /,"$1 single ");
(似乎工作正常:http://jsfiddle.net/nnnnnn/R3V63/4/)
答案 1 :(得分:0)
查看contains选择器