jQuery 选择器 $(".thumb_up")
返回如下形式的集合:
[<form id="like_post_78" ...</form> <form id="like_post_79"> ... </form>]
最终我想生成一个由表单 ID 的数字结尾部分组成的字符串。
"78,79"
获得此信息的最有效方法是什么?
最佳答案
最简单的方法可能是:
var form_ids = $('form').map(function(){return this.id.replace(/[a-z_]/gi,'');}).get().join(', ');
console.log(form_ids); // or alert() or whatever...
我刚刚更新了上面的正则表达式部分,从 /[a-z_]/gi
到 /\D/g
(基本上是贪婪的(g
) 将任何非数字字符 (\D
) 替换为 'nothing'),得到以下代码:
var form_ids = $('form').map(function(){return this.id.replace(/\D/g,'');}).get().join(', ');
console.log(form_ids);
编辑 在思考@James Hill 的准确观察(下方)最简单 != 最有效 之后:
keep in mind that the OP asks for the most efficient method, not the easiest.
因此,使用纯 JavaScript(据我所知,它应该可以跨浏览器使用):
var form_ids = [];
var forms = document.getElementsByTagName('form');
for (var i=0; i<forms.length; i++){
form_ids.push(forms[i].id.replace(/\D/g,''));
}
console.log(form_ids.join(', '));
在 JS Perf 上对两者进行了比较,表明 JavaScript 倾向于 更快(这意味着它更高效,大概是因为它运行的是原生 JavaScript/ECMAscript,而不是抽象代码,然后 调用原生 JavaScript/ECMAscript...)).
引用资料:
- >
map()
. - >
get()
. - >
join()
at the MDN . - >
replace()
at the MDN .
关于javascript - 如何使用 jQuery 收集表单 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319550/