Javascript 如何使用jQuery收集表单ID
jQuery选择器Javascript 如何使用jQuery收集表单ID,javascript,jquery,Javascript,Jquery,jQuery选择器$(“.thumb\u up”)返回如下表单的集合: [<form id="like_post_78" ...</form> <form id="like_post_79"> ... </form>] 最有效的方法是什么 var str = ""; $(".thumb_up").each(function(){ var id = $(this).attr('id').split('like_post_'); str +
$(“.thumb\u up”)
返回如下表单的集合:
[<form id="like_post_78" ...</form> <form id="like_post_79"> ... </form>]
最有效的方法是什么
var str = "";
$(".thumb_up").each(function(){
var id = $(this).attr('id').split('like_post_');
str += id[1] + ',';
});
最后你会得到一个额外的“,”,但是你可以通过这个基本的例子得到你想要的
最后你会得到一个额外的“,”,但是你可以通过这个基本的例子得到你想要的。最简单的方法可能是:
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的准确观察(如下)后编辑了最有效的: 请记住,OP要求的是最有效的方法,而不是最简单的方法 因此,使用纯JavaScript(据我所知,它应该可以跨浏览器使用):
var form_id=[];
var forms=document.getElementsByTagName('form');
对于(var i=0;i而言,最简单的方法可能是:
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的准确观察(如下)后编辑了,这是最简单的!=最有效的:
请记住,OP要求的是最有效的方法,而不是最简单的方法
因此,使用纯JavaScript(据我所知,它应该可以跨浏览器使用):
var form_id=[];
var forms=document.getElementsByTagName('form');
对于(var i=0;i选项1
将jQuery函数与类选择器结合使用:
var aryIDs = [];
$(".thumb_up").each(function(){
//Add ID to the array while stripping off all non-numeric data using RegEx
aryIDs.push(this.id.replace(/\D/g, ""));
});
//Get the ids
var csvIDs = aryIDs.toString();
选项2
使用jQuery获取元素,然后使用普通的旧for循环:
var aryIDs = [];
var divs = $(".thumb_up");
for(var i= 0; i < divs.length; i++)
{
aryIDs.push(divs[i].id.replace(/\D/g, ""));
}
var csvIDs = aryIDs.toString();
var-aryIDs=[];
var divs=$(“.thumb_up”);
对于(变量i=0;i
下面是后一个例子的例子
性能
至于性能,for循环应该每次都更快。请查看我创建的一个示例,比较.each()、.map()和标准for循环的性能
将jQuery函数与类选择器结合使用:
var aryIDs = [];
$(".thumb_up").each(function(){
//Add ID to the array while stripping off all non-numeric data using RegEx
aryIDs.push(this.id.replace(/\D/g, ""));
});
//Get the ids
var csvIDs = aryIDs.toString();
选项2
使用jQuery获取元素,然后使用普通的旧for循环:
var aryIDs = [];
var divs = $(".thumb_up");
for(var i= 0; i < divs.length; i++)
{
aryIDs.push(divs[i].id.replace(/\D/g, ""));
}
var csvIDs = aryIDs.toString();
<代码>var aryId=[];
var divs=$(“.thumb_up”);
对于(变量i=0;i
下面是后一个例子的例子
性能
至于性能,for循环每次都应该更快。请查看我创建的一个示例,比较的性能。each(),.map(),以及循环的标准仅就记录而言,文档中的每个表单都有一个document.forms集合,因此获取所有表单ID的数组非常简单:
var ids = [];
var forms = document.forms;
for (var i = forms.length; i;) {
ids[--i] = forms[i].id;
}
如果您对“效率”的定义意味着最快,那么上述内容应该围绕jQuery的任何答案()。如果您只需要具有特定类的表单,则通过在循环中测试表单的className属性将其过滤掉并不困难。仅为了记录,文档中的每个表单都有一个document.forms集合,因此获取所有表单ID的数组非常简单:
var ids = [];
var forms = document.forms;
for (var i = forms.length; i;) {
ids[--i] = forms[i].id;
}
如果您对“效率”的定义意味着最快,那么上述内容应该围绕jQuery的任何答案()。如果您只需要具有特定类的表单,则通过在循环中测试表单的className属性将其过滤掉并不困难。我认为,一旦您习惯了它,就会出现这种情况。从each()
(以及其他类似循环)到map()肯定需要一段时间
为了实现这一举措的好处。@DavidThomas,很好的解决方案,我没有投反对票,但请记住,OP要求的是最有效的方法,而不是最简单的方法。我想这取决于您或OP如何选择解释“高效”,我认为,因此使用易于阅读/编写的方法,而不是最低限度的方法-CPU密集型方法。但你是对的,这当然是一个公平的观点(这就是为什么在你留下评论之前我稍微编辑了正则表达式)…@DavidThomas同意,硬件很便宜,但由于这是在客户机上运行的JS,并不是每个人都会拥有美国开发人员喜欢的口径机器。同样,回答很好,编辑也很好-以至于我也编辑了我的(不是说我有任何升级票:D)@JamesHill,决定完成你的指针,并把一个本地JavaScript的替代方案也放在一起。并对两者进行比较。我认为,一旦你习惯了它。我确实花了一段时间从each()
(和其他类似循环)移动到map()
为了实现这一举措的好处。@DavidThomas,很好的解决方案,我没有投反对票,但请记住,OP要求的是最有效的方法,而不是最简单的方法。我想这取决于您或OP如何选择解释“高效”,我认为,因此使用易于阅读/编写的方法,而不是最低限度的方法-CPU密集型方法。但你是对的,这当然是一个公平的观点(这就是为什么在你留下评论之前我稍微编辑了正则表达式)…@DavidThomas同意,硬件很便宜,但由于这是在客户机上运行的JS,并不是每个人都会拥有美国开发人员喜欢的高质量机器。同样,回答很好,编辑也很好-我已经做了很多