Jquery 如何从类中删除角色?

Jquery 如何从类中删除角色?,jquery,string,dom-manipulation,html,Jquery,String,Dom Manipulation,Html,我想从ol中的每个id和每个类中删除x。此ol是从表单字段生成的,因此我无法访问它 如果将字段值保存在变量中,如何删除这些字符 下面是我的一些jQuery var itemValue = $("#ItemDescription").val(); console.log(itemValue); $("body #demo ol.sortable").html(itemValue); HTML 内容(#项目描述) 菜单项 菜单项 我还想在完

我想从ol中的每个id和每个类中删除x。此ol是从表单字段生成的,因此我无法访问它

如果将字段值保存在变量中,如何删除这些字符

下面是我的一些jQuery

var itemValue = $("#ItemDescription").val();
console.log(itemValue);
$("body #demo ol.sortable").html(itemValue);
HTML 内容(#项目描述)

  • 菜单项
  • 菜单项
  • 我还想在完成后将其替换为textarea值,但我可以自己做。我只是需要你帮我把“x_3;”去掉

    谢谢!!:)

    只需使用
    attr
    的回调函数,就可以从ID中删除所有“x”:

    $("#ItemDescription li").attr('id',function(i,e){
       if (typeof e != "undefined" && e.substring(0,2)=="x_") return e.substring(2);
    });
    
    例如:

    如果每个元素只附加1个类(如示例中所示),则可以对类执行相同的操作:

    $("#ItemDescription li").attr('id',function(i,e){
       if (typeof e != "undefined" && e.substring(0,2)=="x_") return e.substring(2);
    }).attr('class',function(i,e){
       if (typeof e != "undefined" && e.substring(0,2)=="x_") return e.substring(2);
    });
    
    例如:

    如果可能有多个类,并且“x_”类不是第一个类,则可以执行以下操作:

    $("#ItemDescription li").attr('id',function(i,e){
       if (typeof e != "undefined" && e.substring(0,2)=="x_") return e.substring(2);
    }).attr('class',function(i,e){
        if (typeof e != "undefined"){
            if (e.split(" ").length && e.substring(0,2)=="x_")  return e.substring(2);
            var classes = "";
            $.each(e.split(" "),function(i,b){
                if (b.substring(0,2)=="x_") classes +=  " "+b.substring(2);
                else   classes +=  " "+b;
            });  
            return $.trim(classes);
        }
    });
    
    例如:


    在这种情况下,请使用steve在下面的评论中提到的解决方案。

    这将解决ID问题:

    $('#itemDescription *').attr('id', function (i, old) {
        if (old.match(/^x_/)) {
            return old.replace(/^x_/, '');
        }
    });
    

    @Spudley是的,但如果它是唯一的类,它将始终是第一个被授予的类,在这种情况下,这是一个很好的答案。根据问题中发布的代码,它可能会解决问题,但我只想指出其中的陷阱,以防OP遇到它。:)@Spudley为多个类添加了解决方案,以防更全面的解决方案(其中x|u类不一定是第一个)是只使用
    函数(即,e){return e.replace(/(^ |\s)x|/,'').trim();}
    。(像这样的时候让我很难过JS regex没有周围的人。)很公平,我给了+1。(虽然我想我应该使用正则表达式!)你实际上不需要测试它是否匹配,是吗?@Steve我只是不想在没有找到匹配项的情况下返回任何内容。编辑:看起来它很有效;只是实际上没有任何区别,因为如果没有找到匹配项,它只会返回原始文本。@Steve但是如果没有设置ID,它会设置一个空ID(我同意测试一个空ID会更容易)。
    $('#itemDescription *').attr('id', function (i, old) {
        if (old.match(/^x_/)) {
            return old.replace(/^x_/, '');
        }
    });