让我们说你有这个:
<ul>
<li>[foo] more stuff here</li>
<li>[bar] stuff here</li>
<li>[123] stuff here</li>
</ul>
你想要这个:
<ul>
<li id="foo">more stuff here</li>
<li id="bar">stuff here</li>
<li id="123">stuff here</li>
</ul>
使用jQuery,最简单的方法是什么?
答案 0 :(得分:4)
$("ul li").each(function(){
$li = $(this);
var text = $li.text();
var id = text.substring(text.indexOf("[") + 1, text.indexOf("]"));
$li.attr("id", id).text(text.replace("[" + id + "]", ""));
});
小提琴:http://jsfiddle.net/hunter/FDTcj/
答案 1 :(得分:0)
单独的jquery不会这样做,你需要解析内容。我个人会使用正则表达式:
$("li").each() {
var regex = /\[([^\]]+)\] (.*)/;
var matches = regex.exec($(this).html());
$(this).attr("id", matches[1]);
$(this).html(matches[2]);
};
答案 2 :(得分:0)
我们可以使用regex.- FIDDLE
来完成此操作$(document).ready(function(){
$('ul').children().each(function(){
$strVal=$(this).text();
//extracting the required id value.
var $idVal=((/\[.*\]/g.exec($strVal)).toString()).replace(/(?:\[|\])/g,"");
$(this).html($strVal.replace(/\[.*\]/g,""));
alert($idVal);
$(this).attr('id',$idVal);
});
});