jquery使用正则表达式更改多个ID

时间:2013-04-24 05:55:53

标签: jquery regex dynamic replace

我需要修改div,span,select和其他元素的多个ID,类和名称。

我从表格中的最后一行克隆html,比如

var num     = $('.clonedLighting').length; // num of current rows
var newNum  = new Number(num + 1);      // the numeric ID of the new input field being added

// create the new element via clone(), and manipulate it's ID using newNum value
var newElem = $('#inputlighting' + num).clone().prop('id', 'inputlighting' + newNum);

然后在下一步中我修改克隆的ID,如

newElem.children('td').children('label.prod_item').prop('for', 'appliancetextfield' + newNum);
newElem.children('td').children('select.prod_item').prop('id', 'appliancetextfield' + newNum).prop('name', 'appliancetextfield' + newNum).prop('value', '');

工作正常。但是,appliancetextfield部分现在有更多元素。我想替换包含

的所有名称,类和ID
'appliancetextfield'+num

'appliancetextfield'+newNum

而不是为每个元素做这件事。这可能吗?如何?

澄清:ID,类或名称看起来像

appliancetextfield4
appliancetextfield4_title
appliancetextfield4_titleText
appliancetextfield4_msdd

并且应该变成

appliancetextfield5
appliancetextfield5_title
appliancetextfield5_titleText
appliancetextfield5_msdd

此时看起来数字只会是单个数字,但有一天可能要达到10或更高。感谢您的任何意见。

编辑: 试图实现以下建议和大量的谷歌搜索: 我现在有:

var num     = $('.clonedLighting').length; // current rows
var newNum  = new Number(num + 1); 

$('#inputlighting' + num).clone().prop('id', function(index, id) {
    return id.replace(/(appliance.*)\d\d?(.*)/g, "$1" + newNum + "$2");
}).insertAfter($('#inputlighting' + num));

它看起来像是正确的轨道,但正则表达式和/或反向引用不起作用。

1 个答案:

答案 0 :(得分:0)

我想我明白了:

        //newElem is the newly cloned object
    newElem.find('[id^=appliance]').prop('id', function(index, id) {
            return id.replace(/(appliance.*)\d\d?(.*)/g,"$1" +newNum+ "$2");
    });
    newElem.find('[for^=appliance]').prop('for', function(index, id) {
            return id.replace(/(appliance.*)\d\d?(.*)/g,"$1" +newNum+ "$2");
    });
    newElem.find('[name^=appliance]').prop('name', function(index, id) {
            return id.replace(/(appliance.*)\d\d?(.*)/g,"$1" +newNum+ "$2");
    });

感谢您的帮助。