Javascript 仅获取id/名称的单词部分
我有一个div元素,它包含许多子元素,所有元素的id都是“word1”形式的,举个简单的例子:Javascript 仅获取id/名称的单词部分,javascript,jquery,Javascript,Jquery,我有一个div元素,它包含许多子元素,所有元素的id都是“word1”形式的,举个简单的例子:id=“moviment1”或id=“type1”。 我只需要获取这些id的写入部分(moviment或type),以便将它们的名称以1的增量连接起来(id=“moviment2”或id=“type2”) 按这种方式,我总是得到像id=“moviment12”这样的id。我已经试过了: var id = $(this).prop('id').replace(/\d+/g, ''); 或 但是我总是会遇
id=“moviment1”
或id=“type1”
。
我只需要获取这些id的写入部分(moviment
或type
),以便将它们的名称以1的增量连接起来(id=“moviment2”
或id=“type2”
)
按这种方式,我总是得到像id=“moviment12”
这样的id。我已经试过了:
var id = $(this).prop('id').replace(/\d+/g, '');
或
但是我总是会遇到一些错误,比如“无法读取未定义的”
的属性“replace”/“match”。那么,我做错了什么?还有其他想法吗?多谢各位 试试这个
var onlyAlphabets = id.split(/(\d)/)[0];
理想情况下,您应该使用模板。遍历和修改已解析的元素会使代码速度变慢,难以维护 如果要将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
});
});
最简单的方法是,只需将这些值添加为
数据属性即可:
<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,如果您只想删除这些数字,那么id=this.id.replace(/\d/g.),)
。顺便说一句,$(this).prop(“id”)
是一种非常低效的编写this.id
的方法。你能用小提琴重现这个问题吗?为什么不使用模板而不是克隆?我找到的一些链接可能会对你有所帮助:或者你可以使用敲除js。这很简单,节省了你的时间。
<div id="type1" data-id="1" data-text="type"></div>
var all = [].filter.call(document.querySelectorAll('[id*=type]'), function(el) {
return (/\btype\d+\b/).test(el.id);
});