我的页面上有一些select
元素,我想删除部分名称。
他们的名字看起来像这样:
ctl02$fieldname
我要删除的部分是:ctl02$
。所以它只留下fieldname
。
我要移除的部分始终以ctl
开头,然后是以$
结尾的两位数字。
我使用以下代码尝试了它,但是没有做到这一点:
$(".elements select").each(function() {
this.setAttribute("name", this.getAttribute("name").replace(/ctl([0-9]+)\$$/, ""));
});
任何人都知道我该怎么做?
答案 0 :(得分:4)
正则表达式中只是一个错误。我不知道为什么你加倍$
,正则表达式末尾的$
具有不符合你想要的特定含义。
这是固定版本:
$(".elements select").each(function() {
this.setAttribute("name", this.getAttribute("name").
replace(/ctl[0-9]+\$/, ""));
});
你不需要捕捉任何东西,这就是为什么我也删除了括号。
如果您想确保仅在名称开头处删除ctl内容时,可以将正则表达式更改为/^ctl[0-9]+\$/
。
答案 1 :(得分:4)
我想这里没有必要使用正则表达式:
$(".elements select").attr("name", function(i, attr) {
return attr.substring(attr.indexOf("$") + 1);
});
答案 2 :(得分:0)
使用它:
$(function() {
$("select").each(function() {
var name = $(this).attr("name");
$(this).attr("name", name.replace(/(ctl[0-9]+)/g, ""));
});
});
请参阅演示:link