从元素内容设置属性

时间:2013-03-13 18:49:38

标签: jquery

让我们说你有这个:

<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,最简单的方法是什么?

3 个答案:

答案 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/


摆弄其他括号:http://jsfiddle.net/hunter/FDTcj/1/

答案 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);
    });
});