只获取id/name的单词部分

Get only word part of an id/name

本文关键字:单词部 name 获取 id      更新时间:2023-09-26

我有一个div元素与许多后代的元素,所有的id形式为"word1",一个简单的例子:id="moviment1"id="type1"。我只需要获得这些id (movimenttype)的书面部分,以便将它们的名称与增量1 (id="moviment2"id="type2")连接起来。

$clone.find('*').each(function() {
                var id = $(this).prop('id');
                var num = parseInt( $(this).prop("id").match(/'d+/g), 10 ) +1;
                $(this).prop('id', id+num);
            }); 

就是这样,我总是得到像id="moviment12"这样的id。我已经试过了:

var id = $(this).prop('id').replace(/'d+/g, '');

var id = $(this).prop('id').match(/'w+/);

但我总是得到错误像"cannot read property 'replace'/'match' of undefined"。那么,我做错了什么?还有其他想法吗?非常感谢!

理想情况下,您应该使用模板。遍历和修改已解析的元素会使代码运行缓慢且难以维护。

如果您想将id的数字部分增加1,您可以使用replace方法回调函数:

$clone.find('[id]').prop('id', function(_, id) {
    // Assuming `id` is `test_25_segment`
    return id.replace(/('d+)/, function(num) {
    //                                   |
    //                                   --- is 25 
         return +num + 1;
    //          |
    //          --- parses the matching string into integer 
    });
});

下面是使用上述代码片段的演示。

最简单的方法就是添加这些值作为data-attr:

<div id="type1" data-id="1" data-text="type"></div>

所以你可以很容易地把它们分开,只是使用.data('id').data('text')

您可以这样选择元素:

var all = [].filter.call(document.querySelectorAll('[id*=type]'), function(el) {
    return (/'btype'd+'b/).test(el.id);
});

然后你可以使用replace()

这样的方法来改变id

试试这个…

var onlyAlphabets = id.split(/('d)/)[0];