javascript - 如何使用 jQuery 收集表单 ID

标签 javascript jquery

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...

JS Fiddle demo .

我刚刚更新了上面的正则表达式部分,从 /[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);

JS Fiddle demo .


编辑 在思考@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 Fiddle demo .

JS Perf 上对两者进行了比较,表明 JavaScript 倾向于 更快(这意味着它更高效,大概是因为它运行的是原生 JavaScript/ECMAscript,而不是抽象代码,然后 调用原生 JavaScript/ECMAscript...)).

引用资料:

关于javascript - 如何使用 jQuery 收集表单 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319550/

相关文章:

javascript - 通过 JavaScript 函数将数字附加到输入 HTML 元素中

javascript - 使用 requirejs 结构时 Canvas 中的 Canvas 不显示

javascript - 如何通过javascript从多个不同的文本框中获取值

javascript - 使用 jquery 修改自定义 HTML-Attribute 不会影响 CSS

javascript - 如何使用 javascript/jQuery 指示 javascript 生成的 ID?

javascript - 通过javascript或jQuery获取cookie信息

jquery - getbodyclass IE Issue magento(IE 不参加这个类(class),但在 mozilla 和 chrome 中它工作正常)

javascript - 当我刷新并投票时,投票从我的本地存储重新开始。

javascript - knockout 数组绑定(bind)不起作用

javascript - 在 jquery twitter bootstrap 向导上隐藏药丸